无法在Android listView中删除项目多次

时间:2014-02-06 07:13:42

标签: android eclipse intellij-idea

当我在listView中选择项目并使用longClick时,

我希望它从我的listView中删除但是在删除一个

之后

我无法删除其他项目,因此需要帮助。

我做错了什么? ::我认为它关于onItemLongClick

中if条件下的文件[i]

但是现在我根本没有想法..

public class Screen2 extends Activity implements AdapterView.OnItemLongClickListener {

    ListView listview1;
    private ArrayAdapter<String> adapter1;
    private File[] files;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen2);
        setupGUI();
        adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);


        File f = new File("/sdcard/");
        files = f.listFiles();
        for(File ff:files){
            if(ff.isFile() ==true){
                adapter1.add("file " + ff.getName());
            }
            else if(ff.isDirectory() == true){
                adapter1.add("Dir "+ ff.getName());
            }
        }

        listview1.setAdapter(adapter1);
        listview1.setOnItemLongClickListener(this);
    }

    public void setupGUI() {
        listview1 = (ListView) findViewById(R.id.listview1);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {

        if (files[i].isFile() == true){

            String fname = "/sdcard/" + files[i].getName();
            AA.killSDFile(fname);
            AA.Msg(this, "file is removed", 0);


            adapter1.remove((String)adapterView.getItemAtPosition(i));

            Log.d("file:", fname+" is killed");
        }
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要通过notifyDataSetChanged()函数刷新列表视图数据,并需要在长按事件中调用此函数

File f = new File("/sdcard/");
files = f.listFiles();
for(File ff:files){
    if(ff.isFile() ==true){
        adapter1.add("file " + ff.getName());
    }
    else if(ff.isDirectory() == true){
        adapter1.add("Dir "+ ff.getName());
    }
}

listview1.setAdapter(adapter1);

检查一下,如果您有任何问题,请告诉我。