Я пытаюсь обновить свой пользовательский ArrayAdapter, но после вызова updateListArray вызывается getView, и convertview не имеет значение null, но тег имеет значение null, что приводит к ошибкам. Если я сделаю дополнительную нулевую проверку и установлю новый видоискатель, он просто показывает неправильный контент.
Я просто не могу понять, почему это вызывает у меня проблемы, у меня есть следующее в коде:
public class CustomAdapter extends ArrayAdapter<Item> {
private ArrayList<Item> mListItems;
public CustomAdapter (Context context, int rowResourceId, ArrayList<Item> items) {
super(context, rowResourceId, items);
mListItems = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
// setup holder
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_row, null);
holder.mEventStart = (TextView) convertView.findViewById(R.id.row_date);
holder.mTitle = (TextView) convertView.findViewById(R.id.row_artist);
holder.mSubTitle = (TextView) convertView.findViewById(R.id.row_description);
holder.mImage = (ImageView) convertView.findViewById(R.id.row_artist_image);
holder.mScene = (ImageView) convertView.findViewById(R.id.row_scene_image);
holder.mStatus = (ImageView) convertView.findViewById(R.id.row_new);
holder.mRowParent = (View) convertView.findViewById(R.id.row_parent);
} else {
// get existing row view
holder = (ViewHolder) convertView.getTag();
}
//setup row view content
if(!mListItems.isEmpty()) {
//set content
}
return convertView;
}
public void updateListArray(ArrayList<Item> list) {
this.clear();
for(Item item : list) {
this.add(item);
}
mListItems = list;
notifyDataSetChanged();
}