簡體   English   中英

notifyDataSetChanged()不刷新我的ListView

[英]notifyDataSetChanged() does not refresh my ListView

我正在嘗試從ListView刪除項目。 但是,在調用notifyDataSetChanged() ,我的ListView不會刷新,而是在單擊EditText之后刷新。 我也嘗試過使用adapter.remove方法,但是產生了同樣的錯誤。 為什么會這樣呢?

碼:

public class AddWordActivity extends Activity {
private static ArrayList<String> words = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_word);

    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,       
    android.R.layout.simple_list_item_1, android.R.id.text1, words);
    final ListView listView = (ListView) findViewById(R.id.wordsListView);
    listView.setAdapter(adapter); 

    listView.setOnItemClickListener(new OnItemClickListener(){

        public void onItemClick(AdapterView<?> a, View v, final int position, long id) {
            words.remove(position);
            adapter.notifyDataSetChanged();
        }
    });

}

我已經在這樣的代碼中實現了它,它對我有用

@Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
                MyAdatper adapter=(MyAdatper)parent.getAdapter();
                adapter.remove(myStringArray.get(position));
                adapter.notifyDataSetChanged();

        }

您應該使用adapter.remove(position)而不是words.remove(position)。 如果要使用word.remove(position),則需要再次將適配器設置為ListView,因為ArrayList單詞中的數據已更改。 否則,您可以使用adapter.remove(pos); 方法。

您是否已在ArrayList中添加項目? 請添加同上,否則您的代碼是完美的。

看來“單詞”數組列表對於您的項目偵聽器而言是本地的。 因此,與其嘗試從單詞中刪除值,不如從適配器本身中刪除它。 干杯:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM