2012-02-08 10 views
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(); 
     } 
+1

ここでタグを設定しますか?もしあなたがそれを設定しなければ、それはnullになります... – WarrenFaith

+0

@WarrenFaith私はあなたに十分な良い先生に感謝できません:)、convertview.settag(ホルダー);最後の所有者の下にあったはずです。素子。 – Warpzit

答えて

0

のgetTag()はnullになります。 getTag()への呼び出しを取り除くと、おそらくうまくいくでしょう。

関連する問題