我很困惑实际的ArrayAdapter是如何工作的?当我使用ArrayAdapter进行测试并阅读它时,我必须调用适配器上的notifyDataSetChanged();
或更新listView的适配器(作为listView.setAdapter()
)以更新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 :(得分:1)
活动生命周期onCreate()
之后运行onStart()
和onResume()
。 draw
位于onCreate()
之后。因此可以看到2个项目。
addData(View view)
后运行 visible
。要刷新此地点所需的值adapter.notifyDataSetChanged();