2012-06-20 211 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