ArrayAdapter如何与ListView一起使用?

时间:2017-04-05 19:56:21

标签: android listview android-arrayadapter

我很困惑实际的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");无效。

1 个答案:

答案 0 :(得分:1)

活动生命周期onCreate()之后运行onStart()onResume()draw位于onCreate()之后。因此可以看到2个项目。

在视图为addData(View view)后运行

visible。要刷新此地点所需的值adapter.notifyDataSetChanged();