0
カスタムArrayAdapterを更新しようとしていますが、updateListArrayの呼び出し後にgetViewが呼び出され、convertviewがnullではなくタグがnullで、エラーが表示されます。余分なヌルチェックを行い、新しいビューホルダーを設定すると、間違ったコンテンツが表示されます。私は単にこれは私に問題を与え、なぜ、私はコードに次き把握することはできません :あなたはsetTag()を使用していない限りAndroid ArrayAdapters convertviewsタグの更新後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();
}
ここでタグを設定しますか?もしあなたがそれを設定しなければ、それはnullになります... – WarrenFaith
@WarrenFaith私はあなたに十分な良い先生に感謝できません:)、convertview.settag(ホルダー);最後の所有者の下にあったはずです。素子。 – Warpzit