Адаптер массива & ldquo; getView () & rdquo; не называется [дубликат]

Вы можете использовать опцию «-add-modules = java.xml.bind» для добавления модуля привязки xml в среду выполнения JVM.

Например: «java --add-modules = java.xml.bind XmlTestClass "

31
задан yadav_vi 6 June 2016 в 16:02
поделиться

6 ответов

Единственными причинами getView не называются:

  1. getCount возвращает 0.
  2. , вы забыли называть setAdapter на ListView.
  3. Если видимость ListView 's (видимость контейнера) равна GONE. Благодаря @ TaynãBonaldo для ценного ввода.
  4. ListView не привязан к какому-либо макету видового экрана. То есть, mListView = new ListView(...) используется без myLayout.addView(mListView).

В onPostExcute после создания нового экземпляра CarListAdapter я предлагаю вам обновить новый экземпляр до ваш ListView. Действительно, вам нужно снова позвонить

 mList.setAdapter(adapter);

Изменить: setAdapter должен всегда вызываться в потоке ui, чтобы избежать неожиданного поведения

Edit2:

То же самое относится к RecyclerView. Убедитесь, что

  • getItemCount возвращает значение больше, чем 0 (обычно размер набора данных)
  • должны быть вызваны как setLayoutManager, так и setAdapter на UI Thread
  • Видимость виджета должна быть установлена ​​на VISIBLE
139
ответ дан Mike M. 26 August 2018 в 14:45
поделиться

Что вы делали, это

В вашем адаптере

public CarListAdapter(Context context , ArrayList<CarDetail> items) {

    this.context = context;
    this.items = items;

}

в вашем фрагменте

adapter = new CarListAdapter(getActivity(),ServiceCarListFragment.this.carDetailList);

Надеюсь, вы будете использовать FragmentActivity

Вам нужно позвонить

adapter = new CarListAdapter(YOUR_ACTIVITY_CONTEXT, carDetailList);

, где YOUR_ACTIVITY_CONTEXT будет вашим FragmentActivity

0
ответ дан Ameer Moaaviah 26 August 2018 в 14:45
поделиться

У меня была та же проблема. И после того, как все подсказки выше моего getView все еще не вызывались. Поэтому я попытался удалить ScrollView, который использовался вне ListView. Тогда getView работал хорошо. Просто добавьте еще одну возможность. Я надеюсь кому-то помочь.

0
ответ дан DaniloLM 26 August 2018 в 14:45
поделиться

У меня возникла аналогичная проблема. Чтобы решить эту проблему, выполните простую работу:

В вашем onCreateView вам придется подождать до создания представления. Поэтому измените свои строки следующим образом:

mList = (ListView)v.findViewById(R.id.list);
mList.setAdapter(adapter);

ИЗМЕНИТЬ ВЫШЕ ДВУХ ЛИНИЙ В:

mList = (ListView)v.findViewById(R.id.list);
mList.post(new Runnable() {
    public void run() {
        mList.setAdapter(adapter);
    }
});

Надеюсь, это поможет другим, столкнувшимся с подобной проблемой

3
ответ дан Gaurav Srivastava 26 August 2018 в 14:45
поделиться

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

adapter.getCount();
5
ответ дан Kushal 26 August 2018 в 14:45
поделиться

В конструкторе отсутствует суперкласс. См. Мой пример ниже:

public AppDataAdapter(Activity a, int textViewResourceId, ArrayList<AppData> entries) {
    super(a, textViewResourceId, entries);
    this.entries = entries;
    this.activity = a;
}
0
ответ дан o0rebelious0o 26 August 2018 в 14:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: