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;
}
}
は、サイズをログに役立つことを願って、これを試してくださいそれをアダプタにバインドする前に – Raghunandan
1.「FilterList」関数を呼び出す回数を確認します。 2.新しい結果を追加する前に 'filteredList'をクリアしてください。 –
あなたのアダプタコードは問題ありません。デバッガを使用して、アイテムがリストに2回追加された理由を確認します。 – Raghunandan