简体   繁体   English

ListView数据重复

[英]ListView data repeating

Data from parsed XML is fed into an ArrayList itemList. 来自解析的XML的数据被馈送到ArrayList itemList。 Results meeting the criteria are then added to filteredList, which in turn is bound to the adapter to be displayed in my ListView. 然后将符合条件的结果添加到filteredList,后者又绑定到要在我的ListView中显示的适配器。 However, the data being added to filteredList is being repeated (twice) and I do not understand why. 但是,被添加到filteredList的数据正在重复(两次),我不明白为什么。 Could anyone perhaps point it out for me? 谁能为我指出呢? I've been staring at it for a while now lol. 我一直盯着它看了一段时间。

Here is the function from MainActivity.java 这是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");
    }

And here is my adapter class: 这是我的适配器类:

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;
    }
}

try this i hope it will help you 试试这个,希望对您有帮助

 @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;
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM