2017-04-05 24 views
1

我很困惑實際的ArrayAdapter是如何工作的?當我使用ArrayAdapter進行測試並閱讀它時,我必須調用適配器上的notifyDataSetChanged();或更新listView的適配器(如listView.setAdapter())以更新ListView中的記錄。ArrayAdapter如何真正與ListView一起使用?

現在檢查這些代碼。

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> list = new ArrayList<>(); 
    ExampleArrayAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ListView listView = (ListView)findViewById(R.id.listView); 
     adapter = new ExampleArrayAdapter(this,list); 
     listView.setAdapter(adapter); 

     // Here I'm adding record after the listView.setAdapter(adapter); 
     // it is working fine. 
     list.add("Good"); 
     list.add("Bad"); 

    } 

    public void addData(View view){ 
     // but when I call this method from Button then it doesn't working. 
     list.add("New Data Added"); 
    } 
} 

我不這麼認爲這兩行之間有任何區別。

list.add("Good"); 
list.add("Bad"); 

list.add("New Data Added"); 

兩者是setAdapter()之後加入記錄;

那爲什麼list.add("New Data Added");不工作。

+0

沒有回答,只是一個建議...使用Recyclerview值。 – ElDuderino

+0

@ElDuderino謝謝,但我沒有解決問題,想學習。 – UnKnown

回答

1

之後onCreate()按活動生命週期運行onStart()onResume()drawonCreate()之後。因此2個項目是可見的。

addData(View view)視圖後運行是visible。要刷新,你需要在這個地方adapter.notifyDataSetChanged();

相關問題