Метод getView () пользовательского ArrayAdapter не вызывается

Я новичок в разработке Android. Я пытаюсь создать приложение. Я использую ArrayAdapter для просмотра списка, но метод ArrayAdapter getView () не вызывается.

Я поместил отладчик в конструктор ArrayAdapter и проверил, я получаю размер списка 16, но метод getView () не вызывается.

Вот мой код для ArrayAdapter.

public class Adapter extends ArrayAdapter<Item> {

    private List<Item> list;
    private Context context;
    private LayoutInflater inflater;

    public Adapter(Context context, int resource, List<Item> list) {
        super(context, resource, list);
        this.list = list;
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.section_list, null);
            holder = new ViewHolder();

            holder.text = convertView.findViewById(R.id.text);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        final Item item = getItem(position);

        holder.text.setText(item.getTitle());



        return convertView;
    }

    @Override
    public int getCount() {
        if (this.list != null && this.list.size() > 0) {
            return this.list.size();
        } else {
            return 0;
        }
    }

    private class ViewHolder {
        private TextView text;
    }
}

Как я вызываю адаптер:

 adapter = new Adapter(getContext(), R.layout.section_list, listItem);
 notificationListView.setAdapter(adapter);

Вот мой макет:

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical">

    <TextView
        android:id = "@+id/text"
        android:layout_width = "match_parent"
        android:text = "MAXOFEN is PEACHES"
        android:layout_margin = "10dp"
        android:textSize = "14sp"
        android:layout_height = "wrap_content" />

</LinearLayout>

Вот мой фрагмент списка:

<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:orientation = "vertical">

    <LinearLayout

       android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:orientation = "vertical">

        <LinearLayout

           android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:background = "@drawable/shadow"
            android:orientation = "vertical"
            android:visibility = "visible">

            <RelativeLayout
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:layout_margin = "12dp">

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:layout_centerVertical = "true"
                    android:text = "@string/notifications"
                    android:textColor = "@color/black"
                    android:textSize = "18sp" />


                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:layout_alignParentRight = "true"
                    android:layout_centerVertical = "true"
                    android:background = "@color/colorAccent"
                    android:padding = "8dp"
                    android:text = "@string/see_all"
                    android:textColor = "@color/white" />

            </RelativeLayout>

            <View
                android:layout_width = "fill_parent"
                android:layout_height = "1dp"
                android:background = "@color/hrLine" />

            <LinearLayout
                android:id = "@+id/userNameLl"
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:layout_margin = "12dp">

                <ImageView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:src = "@drawable/danger_alert_copy" />

                <TextView
                    android:id = "@+id/userName"
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:layout_marginLeft = "15dp"
                    android:text = "harsh" />


            </LinearLayout>

            <com.knowyourmeds.utils.ExpandableHeightListView
                android:id = "@+id/list"
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:divider = "@null"
                android:dividerHeight = "0dp" />
        </LinearLayout>
 </LinearLayout>

Как я создаю список:

Item item;
List<Item> listItem = new ArrayList<>();
item = new Item(1l,null,"body","title");
listItem.add(item);

item = new Item(2l,null,"body 1","title 1");
listItem.add(item);

item = new Item(3l,null,"body 2","title 2");
listItem.add(item);

item = new Item(5l,null,"body 3","title 3");
listItem.add(item);

Сообщите мне, если я что-то упустил.

Разместите свой макет!

Tung Tran 28.03.2018 04:32

Проверьте размер списка массивов, если должен быть хотя бы один элемент

Chetan Joshi 28.03.2018 04:34

@MeosCoder, пожалуйста, проверьте обновленный вопрос

Thankless 28.03.2018 04:35

@ChetanJoshi да, я поставил отладчик и размер проверенного списка равен 16.

Thankless 28.03.2018 04:36

Что такое notificationText? в ViewHolder находится text

Tung Tran 28.03.2018 04:41

@MeosCoder извините, это опечатка. задавая здесь вопрос, я изменил текстовое имя, поэтому я забыл изменить текстовое имя. обновленный вопрос

Thankless 28.03.2018 04:43

список в действии ?? или фрагмент ??

Santanu Sur 28.03.2018 04:51

@SantanuSur фрагмент

Thankless 28.03.2018 04:51

разместите свой listItem во фрагменте ...

Santanu Sur 28.03.2018 05:03

@SantanuSur, пожалуйста, проверьте мой обновленный вопрос

Thankless 28.03.2018 05:15

Я попросил вас опубликовать свой Arraylist listItem, который вы используете во фрагменте, а не в макете !!

Santanu Sur 28.03.2018 05:20

@SantanuSur извини. теперь проверьте обновленный вопрос

Thankless 28.03.2018 05:34

а вы использовали itemList вместо listItem, орфографическая ошибка ??

Santanu Sur 28.03.2018 05:35

@SantanuSur, это ошибка ввода, я поместил отладчик в конструктор адаптера, где размер списка равен 4

Thankless 28.03.2018 05:37

Почему много опечаток? и как быть уверенным, что вам getView не позвонят?

Abu Yousuf 28.03.2018 06:27

Не связано с вашей проблемой, но поскольку вы новичок в разработке дроидов, пожалуйста, привыкните к основам: не сохраняйте ссылку на переданный контекст. Если он вам действительно нужен, сохраните ссылку на контекст приложения, например, так: this.mAppCtx = context.getApplicationContext ().

Alessio 28.03.2018 06:47
0
16
54
2

Ответы 2

Вы можете попробовать переопределить метод getItem() из своего базового класса.

Добавьте это в свой код,

@Override
    public Item getItem(int position) {
        return list.get(position);
    }

Проверьте видимость Listview в вашем макете. Если он скрыт, метод getView () не будет вызываться. Другие представления в макете могут скрывать представление списка.

Попробуйте удалить другие представления и оставить только макет ListView inn.

Другие вопросы по теме