【问题标题】:ListView onClick update clears the listListView onClick 更新清除列表
【发布时间】:2015-04-08 14:38:52
【问题描述】:

我有以下代码应该删除被点击的项目:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
    String itemValue = (String) listView.getItemAtPosition(position);
    email_addresses.remove(position);

    String size = Integer.toString(email_addresses.size());
    Log.d("Size: ", size);

    //listView = (ListView) findViewById(R.id.email_list);
    //ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, android.R.id.text1, email_addresses);
    //listView.setAdapter(adapter);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(mainAppContext, android.R.layout.simple_list_item_1, android.R.id.text1, email_addresses);
    ((ListView)parent).setAdapter(adapter);
    parent.refreshDrawableState();
}

当我点击一个项目时,列表被清除并且没有显示任何内容。大小是正确的值,可以重建列表,但我无法让此代码正常工作。 谢谢

【问题讨论】:

  • 删除最后 3 行。而是尝试调用 adapter.notifyDataSetChanged(); 。 adapter 在 setOnItemClickListener 之外定义

标签: android listview android-listview onclick onitemclicklistener


【解决方案1】:

您是否考虑过简单地将您的 Adapter 设为成员变量并调用 notifyDataSetChanged,而不是每次都创建一个全新的 Adapter?

ArrayAdapter<String> adapter = new ArrayAdapter<>(mainAppContext, android.R.layout.simple_list_item_1, android.R.id.text1, email_addresses);
((ListView)parent).setAdapter(adapter);

变成:

mAdapter.notifyDataSetChanged();

【讨论】:

    【解决方案2】:

    将您的列表和适配器定义为即时变量,并且您必须通知适配器才能使删除生效, 试试这个,

            listview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                email_addresses.remove(position);
                adapter .notifyDataSetChanged();
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 2015-01-19
      • 2021-12-02
      • 2023-03-13
      相关资源
      最近更新 更多