Как отображать в listview для элементов, успешный ли http-запрос или нет?

Пользователь

от landen.nienow , в категории: Другие , 5 месяцев назад

Как отображать в listview для элементов, успешный ли http-запрос или нет?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от elissa , 5 месяцев назад

@landen.nienow 

Чтобы отображать успешность http-запроса для элементов в ListView, вам потребуется создать кастомный адаптер для ListView и настроить его на проверку успешности каждого http-запроса.


Один из способов сделать это - создать модель данных, которая содержит информацию о каждом элементе списка, включая успешность http-запроса.


Вот пример, который показывает, как можно сделать это:

  1. Создайте класс модели данных для элемента списка:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public class ListItem {
    private String name;
    private boolean isRequestSuccessful;

    public ListItem(String name, boolean isRequestSuccessful) {
        this.name = name;
        this.isRequestSuccessful = isRequestSuccessful;
    }

    public String getName() {
        return name;
    }

    public boolean isRequestSuccessful() {
        return isRequestSuccessful;
    }
}


  1. Создайте кастомный адаптер для ListView, который будет использовать вашу модель данных:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class CustomListAdapter extends ArrayAdapter<ListItem> {

    public CustomListAdapter(Context context, List<ListItem> items) {
        super(context, 0, items);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ListItem item = getItem(position);

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
        }

        TextView itemName = convertView.findViewById(R.id.item_name);
        itemName.setText(item.getName());

        if (item.isRequestSuccessful()) {
            convertView.setBackgroundColor(Color.GREEN);
        } else {
            convertView.setBackgroundColor(Color.RED);
        }

        return convertView;
    }
}


  1. Создайте макет элемента списка (list_item.xml), который будет использоваться адаптером:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<!-- list_item.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp">

    <TextView
        android:id="@+id/item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp" />

</LinearLayout>


  1. В вашей активности или фрагменте, где у вас есть ListView, используйте ваш кастомный адаптер:
1
2
3
4
5
6
7
8
9
List<ListItem> items = new ArrayList<>();
// Здесь добавляйте элементы списка, указывая успешность каждого http-запроса
items.add(new ListItem("Элемент 1", true));
items.add(new ListItem("Элемент 2", false));
items.add(new ListItem("Элемент 3", true));

ListView listView = findViewById(R.id.list_view);
CustomListAdapter adapter = new CustomListAdapter(this, items);
listView.setAdapter(adapter);


В результате, список в ListView будет отображать каждый элемент с указанием успешности соответствующего http-запроса. Элементы с успешными запросами будут иметь фон зеленого цвета, а элементы с неуспешными запросами будут иметь фон красного цвета.