Android ListView不显示新项目

时间:2013-10-28 16:23:03

标签: java android listview android-listview

我有一个ListView,它根据所选RadioButton的值填充,RadioButtons的OnClick事件触发ListView刷新新值。

我有这个几乎工作,但问题是,如果第一个RadioButton有4个项目在ListView中显示,那么第二个单击的RadioButton有10个要显示的项目,ListView显示10个项目的前6个项目,然后再前4个项目,好像它正在包装物品。我使用ArrayList<HashMap<String, String>> listValues和SimpleAdapter填充ListView,我检查了listValues确实包含10个不同的值。

显示项目的代码如下:

    ListView listview = (ListView)getView().findViewById(R.id.my_listview);

    SimpleAdapter simpleAdapt = 
            new SimpleAdapter(getView().getContext(), listValues, 
                               R.layout.my_listitem, 
                               null, null) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            HashMap<String, String> listItem = listValues.get(position);

            View v = convertView;

            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);                
                v = inflater.inflate(R.layout.my_layout, null);

                TextView nameTextview =
                        (TextView)v.findViewById(R.id.my_textview);
                nameTextview.setText(listItem.get("name"));

                TextView detailTextview =
                        (TextView)v.findViewById(R.id.my_textview_2);
                detailTextview.setText(listItem.get("detail"));

                if (listItem.get("main_image") != null) {
                    int imageId = Integer.valueOf(listItem.get("main_image"));
                            (ImageView)v.findViewById(R.id.my_imageview);
                    image.setImageResource(imageId);
                }
            } 
            return v;
        };
    };

    listview.setAdapter(simpleAdapt);

重复列表项有明显的原因吗?

1 个答案:

答案 0 :(得分:1)

处理getView方法的方式效率不高。你应该试试ViewHolder模式。以下链接是您可以遵循的良好做法。

http://www.vogella.com/articles/AndroidListView/article.html