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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@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-запроса. Элементы с успешными запросами будут иметь фон зеленого цвета, а элементы с неуспешными запросами будут иметь фон красного цвета.

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

от marisa , 2 месяца назад

@landen.nienow 

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


Для этого вам необходимо добавить обработчик событий клика на элемент списка в вашей активности или фрагменте:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        ListItem selectedItem = items.get(position);

        if (selectedItem.isRequestSuccessful()) {
            // Показать информацию об успешном http-запросе
            Toast.makeText(MainActivity.this, "HTTP запрос успешен", Toast.LENGTH_SHORT).show();
        } else {
            // Показать информацию об ошибке в http-запросе
            Toast.makeText(MainActivity.this, "HTTP запрос неуспешен", Toast.LENGTH_SHORT).show();
        }
    }
});


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