2016-03-28 21 views
2

解析されたXMLからのデータは、ArrayList itemListに渡されます。フィルタリングされたListに基準を満たす結果が追加され、ListViewに表示されるアダプタにバインドされます。しかし、filteredListに追加されているデータが(2回)繰り返されているため、なぜその理由が分かりません。誰かが私のためにそれを指摘してくれますか?私はしばらくの間、それを見つめていました。ここでListViewデータの繰り返し

はMainActivity.java

private void FilterList() { 

     ListView lv = (ListView) findViewById(R.id.info); //locate listview 

     for (int i = 0; i < itemList.size(); i++) //cycle arraylist 
     { 
      try { 
       //convert startdate, endDate 
       Date cDate = dateFormat.parse(currDate);  //get/convert selected date 
       Date stDate = dateFormat.parse(itemList.get(i).startDate); 
       Date enDate = dateFormat.parse(itemList.get(i).endDate); 
       //compare, if active true then add 
       if ((cDate.after(stDate)) && (cDate.before(enDate))){ 
        //add itemList element to filterList 
        filteredList.add(itemList.get(i)); 
        Log.d("DEBUG CHECKME", "added to filteredList: "); 
       } 
      } catch (java.text.ParseException e) { 
       e.printStackTrace(); 
      } 
     } 

     itemAdapter = new PostItemAdapter(mcontext, R.layout.postitem, filteredList); //pass results into adapter 
     lv.setAdapter(itemAdapter); //bind listview & adapter 
      Log.d("DEBUG CHECKME", "lv.setAdapter"); 
    } 

から関数であり、ここに私のアダプタクラスです:

public class PostItemAdapter extends ArrayAdapter<Item> 
{ 
    private LayoutInflater inflater; 
    private ArrayList<Item> datas; 

    public PostItemAdapter(Context context, int textViewResourceId, ArrayList<Item> objects) 
    { 
     super(context, textViewResourceId, objects); 

     inflater = ((Activity) context).getLayoutInflater(); 
     datas = objects; 
    } 

    //class to hold view object references 
    static class ViewHolder 
    { 
     TextView itemTitleView; 
     ImageView itemThumbView; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder viewHolder; 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.postitem, null); 

      viewHolder = new ViewHolder(); 
      viewHolder.itemThumbView = (ImageView) convertView.findViewById(R.id.itemThumb); 
      viewHolder.itemTitleView = (TextView) convertView.findViewById(R.id.itemTitleLabel); 
      //viewHolder.itemDateView = (TextView) convertView.findViewById(R.id.itemDateLabel); 
      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     if (datas.get(position).itemThumbUrl == null) 
     { 
      viewHolder.itemThumbView.setImageResource(R.drawable.test); 
     } 

     viewHolder.itemTitleView.setText(datas.get(position).itemTitle); 

     return convertView; 
    } 
} 
+1

は、サイズをログに役立つことを願って、これを試してくださいそれをアダプタにバインドする前に – Raghunandan

+2

1.「FilterList」関数を呼び出す回数を確認します。 2.新しい結果を追加する前に 'filteredList'をクリアしてください。 –

+0

あなたのアダプタコードは問題ありません。デバッガを使用して、アイテムがリストに2回追加された理由を確認します。 – Raghunandan

答えて

0

は、私はそれはあなた

@Override 
     public View getView(final int position, View convertView, final ViewGroup parent) { 
      View row = null; 

      if (convertView == null) { 
       LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
       row = inflater.inflate(R.layout.postitem, parent, false); 
      } else { 
       row = convertView; 
      } 
      filteredList datas= rowItems.get(position); 
      try { 
       TextView itemTitleView = (TextView) convertView.findViewById(R.id.itemTitleLabel); 
       itemTitleView.setText(datas.itemTitle); 


      } catch (Exception e) { 

      } 

      try { 
      ImageView  itemThumbView = (ImageView) convertView.findViewById(R.id.itemThumb); 
    itemThumbView.setImageResource(R.drawable.test); 
      } catch (Exception e) { 

      } 




      }); 

      return row; 
     } 
関連する問題