2012-06-20 164 views
1

我想从ListView中删除项目,但我不知道该怎么做。Android:删除项目(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删除项目,引导我做到这一点。

+0

凡要删除的元素 ((ArrayAdapter)list.getApadter 。())除去(list.getApadter()的getItem(索引));((ArrayAdapter)list.getApadter())notifyDataSetChanged(); –

+0

你想删除0的ID吗?在FLYNOTE_refresh函数中? –

回答

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<String>而非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(); 
     } 
    }); 
} 
+0

谢谢!你是最棒的! =) – user1468102

2

您可以从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

+1

adapter1.remove()是“字符串对象” – user1468102

+0

remove()取整数而不是字符串 –

+0

我必须同意user1468102,[ArrayAdapter .remove(T object)](http://developer.android.com/reference/ ()方法remove()只需要ArrayAdapter被引用类的一个对象,而ArrayAdapter.remove()本质上是'lv_arr.remove()'的一个快捷方式,它不会对于String []'存在。 – Sam