Adroidstudio——listview的使用和arrayadapter的异步更新

listview的介绍

listview是Androidstudio的一种高级控件,能实现添加多组数据,需要adapter适配器实现 datelist添加到item
并显示到activity中。
Adroidstudio——listview的使用和arrayadapter的异步更新_第1张图片
Adroidstudio——listview的使用和arrayadapter的异步更新_第2张图片

目标实现

将一个list中的多组数据异步更新,并显示到listview中

初始化

private ListView listView;
static List<String>nameList=new ArrayList<>();
......
arrayAdapter =  new ArrayAdapter<>(MainActivity.this, item_text, nameList);//第一个参数是当前活动,第二个参数是设置的每组数据形式,第三个是添加的数据。
listView.setAdapter(arrayAdapter);//将list与adapter连接

异步更新

 Thread thread=new Thread(new Runnable() {
            @Override
            public void run() {
                String url="https://www.52bqg.com/modules/article/search.php?searchkey=%B5%DB%B0%D4";
                get_shu(url);//这里运行一个耗时的函数
                //UI控件的更新必须在UI线程中
                //耗时的操作需要在子线程中
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        arrayAdapter.notifyDataSetChanged();//更新listview的函数
                    }
                });
            }

        });

        thread.start();

注意事项

adapter连接的date必须是原来的,不能new、不能“=”,否则更新函数无效。

SimpleListView

多组数据显示

 		int[] heads=new int[]{R.drawable.ic_launcher_background};
        String[] names = new  String[]{"李白"};
        String[] nicknames=new String[]{"诗仙"};
        List list = new ArrayList();
        for (int i=0;i<names.length;i++){
            Map<String,Object>item=new HashMap<>();
            item.put("heads",heads[i]);
            item.put("name",names[i]);
            item.put("nicknames",nicknames[i]);
            list.add(item);
        }
        SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,R.layout.item,
                new String[]{"heads","names","nicknames"},
                new int[]{R.id.imageView,R.id.textview,R.id.textcview2});
        listView.setAdapter(simpleAdapter);

你可能感兴趣的:(Android)