Android ArrayAdapters convertviews отмечает нуль после обновления - PullRequest
0 голосов
/ 08 февраля 2012

Я пытаюсь обновить свой пользовательский 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();
        }

1 Ответ

0 голосов
/ 08 февраля 2012

getTag () будет нулевым, если вы не использовали setTag ().Вероятно, он будет работать так, как вы хотите, если вы удалите вызов getTag ()

...