У меня есть ListView
с пользовательским адаптером, который расширяет ArrayAdapter
, My ListView имеет 5
различных типов элементов, которые он может содержать, поэтому я использую ArrayAdapter
, ну, проблема феястранно для меня, я не уверен, как отладить это.Я опубликую видео.
![enter image description here](https://i.stack.imgur.com/hLyr5.gif)
, как вы можете видеть, я нажимаю на мои Checkbox
и Modal
элементы без каких-либо проблем в началено как только я прокручиваю вниз и назад, они больше не щелкают!Это действительно странная ошибка, с которой я сталкиваюсь.Вот как я делаю свой адаптер.
Это код класса моего адаптера.Это довольно компактно.
public class SettingAdapter extends ArrayAdapter<Setting> {
private List<Setting> settings;
public SettingAdapter(Context context) {
super(context, 0);
setSettings(new ArrayList<>());
}
public SettingAdapter(Context context, List<Setting> settings) {
super(context, 0);
setSettings(settings);
}
public void setSettings(List<Setting> settings) {
this.settings = settings;
clear();
addAll(settings);
notifyDataSetChanged();
}
@Override
public int getViewTypeCount() {
return 4;
}
@Override
public Setting getItem(int i) {
return settings.get(i);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return Objects.requireNonNull(getItem(position)).getView(getContext());
}
}
У меня есть класс abstract
с именем Setting
my ListView
Элементы будут расширять этот класс и реализовывать getView()
и такие.
Вотпример.
public class Summary extends Setting {
private View view;
public Summary(String name) {
super(name);
}
public int getType() {
return SettingType.SUMMARY;
}
@Override
public View getView(Context context) {
if(view == null) {
view = //Load the view here
}
return view;
}
}
Я также сохраняю свою ссылку View
на будущее, я не уверен, что я делаю не так, может кто-нибудь подсказать мне, как отладить это или исправить это?Потратили более 10 часов, но все еще безуспешно.