【问题标题】:Android: Remove item (ListView)Android:删除项目(ListView)
【发布时间】:2012-06-22 04:47:48
【问题描述】:

我想从ListView 中删除一个项目,但我不知道该怎么做。

这是我的代码...

public void FLYNOTE_refresh() {
    int i;
    SharedPreferences Pref = getSharedPreferences("nnote", MODE_WORLD_READABLE); //созаётся файл настроек "nnote" и туда барыжиться вся хня
    key = Pref.getInt("number", 0); 
    key++;
    String lv_arr[] = new String[key];

    for (i = 0; i < key; i++) {
         lv_arr[i] = Pref.getString("n" + i, "none");           
    }

    textView1.setText(String.valueOf(key));

    listView1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
    listView1.setTextFilterEnabled(true);
}

我想删除带有0 id 的项目,请指导我这样做。

【问题讨论】:

  • 要删除元素的位置 ((ArrayAdapter)list.getApadter()).remove(list.getApadter().getItem(index));((ArrayAdapter)list.getApadter()) .notifyDataSetChanged();
  • 你想在哪里删除 0 id?在 FLYNOTE_refresh 函数中?

标签: java android android-listview


【解决方案1】:

你可以从 ListView 中删除一个项目:

 ArrayAdapter<String> adapterlist = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, lv_arr);
     listView1.setAdapter(adapter1);
     adapter1.notifyDataSetChanged();
     listView1.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> a, View v, int position, long id) {
    adapter1.remove(position);
    adapter1.notifyDataSetChanged();
    });

你可以看到这些从 ListView 中删除项目的帖子:

Remove ListView items in Android

Android: how to remove an item from a listView and arrayAdapter

【讨论】:

  • adapter1.remove() 是“字符串对象”
  • remove() 取整数而不是字符串
  • 我必须同意 user1468102,ArrayAdapter<class T>.remove(T object) 意味着 remove() 只接受 ArrayAdapter 引用类的对象,ArrayAdapter.remove() 本质上是 lv_arr.remove() 的快捷方式,它不存在对于String[]
【解决方案2】:

如果您不想显示项目 0,只需调整 lv_arr 的大小并更改您的 for 循环:

public void FLYNOTE_refresh() {
    int i;
    SharedPreferences Pref = getSharedPreferences("nnote", MODE_WORLD_READABLE); //созаётся файл настроек "nnote" и туда барыжиться вся хня
    key = Pref.getInt("number", 0); 
    String lv_arr[] = new String[key]; // One item smaller without "n0" 

    key++;
    for (i = 1; i < key; i++) {
        // Skip "n0" like this
        lv_arr[i - 1] = Pref.getString("n" + i, "none");           
    }

    textView1.setText(String.valueOf(key));

    listView1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lv_arr));
    listView1.setTextFilterEnabled(true);
}

如果您想在应用程序运行时删除项目,我建议使用List&lt;String&gt; 而不是String[]

public void FLYNOTE_refresh() 
{
    int i;
    SharedPreferences Pref = getSharedPreferences("nnote", MODE_WORLD_READABLE); //созаётся файл настроек "nnote" и туда барыжиться вся хня
    key = Pref.getInt("number", 0); 
    key++;
    lv_arr = new ArrayList<String>(); 

    for (i = 1; i < key; i++) {
        lv_arr.add(Pref.getString("n" + i, "none"));           
    }

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lv_arr);
    listView1.setAdapter(adapter);

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

【讨论】:

  • 谢谢!你是最棒的! =)
猜你喜欢
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多