将一个额外项添加到ListActivity

时间:2012-03-15 12:40:18

标签: android listview listactivity

我使用ListActivity和ArrayAdapter为Sdcard文件创建了一个ListView。 它运作良好。

然后我想在ListView中添加一个额外的项目。所以我添加了一个项目列表并调用了notifyDataSetChanged()。 但它显示了力量接近。为什么? 帮助我。

        FilenameFilter fnf=new FilenameFilter()
        {

            public boolean accept(File dir, String filename) {
                // TODO Auto-generated method stub
                if(new File(dir+"/"+filename).isDirectory())
                    return true;
                else
                return false;
            }

        };
        filelist=sdcard.list(fnf);
        List<String> list=Arrays.asList(filelist);
        Collections.sort(list);
        ArrayAdapter<String> listadap=new ArrayAdapter<String>(this,R.layout.filelist,R.id.listview,list);
        setListAdapter(listadap);
        list.add("Test");
        listadap.notifyDataSetChanged();

3 个答案:

答案 0 :(得分:1)

如果您想以动态方式更改ListView的内容。创建CustomAdapter,从BaseAdapter延伸。将列表传递给适配器的构造函数。重写BaseAdapter interface。

的方法

在适配器中添加add方法。您将在适配器中实例化List(将其保存在构造函数的字段中)。方法add,将项目添加到'ArrayList',然后只是this.notifyDataChanged()(这,因为你在CustomAdapter

此方法将解决使用适配器重新创建的ListView中的跳转问题。

答案 1 :(得分:0)

为什么在设置适配器后放置List.add("Test");

你可以改变吗。

FilenameFilter fnf=new FilenameFilter()
    {

        public boolean accept(File dir, String filename) {
            // TODO Auto-generated method stub
            if(new File(dir+"/"+filename).isDirectory())
                return true;
            else
            return false;
        }

    };
    filelist=sdcard.list(fnf);
    List<String> list=Arrays.asList(filelist);
    list.add("Test");
    Collections.sort(list);
    ArrayAdapter<String> listadap=new ArrayAdapter<String>(this,R.layout.filelist,R.id.listview,list);
    setListAdapter(listadap);        
    //listadap.notifyDataSetChanged();

答案 2 :(得分:0)

感谢您的帮助。

我找到了另一个将Button添加到Listview的解决方案。

bt_up=new Button(this);
bt_up.setText("Up");
getListView().addView(bt_up);

这也适用于TextView。