安卓的ListView入门

前言

酒易的个人博客

ListView分为了两章,一章入门一章进阶。
安卓的ListView进阶

ListView必要的四个文件

在这里插入图片描述
第一个:
ListviewItemTestAdapter.java
引入了listview_item_test.xml,用来设置listview的每个子项
这个是listview的适配器文件,listview设置适配器的时候就需要new出这个文件,然后设置适配器

主要方法:
listviewItemTestAdapter.notifyDataSetChanged();
用来更新适配器的数据。

第二个:
ListViewTest.java
引入了listview_test.xml,获取到布局文件中的listview控件,然后设置list view的内容
listview中的内容需要放在适配器中设置,也就是第一个Java文件中的适配器中。

主要方法:
listview.setAdapter();一个参数,传入一个适配器,也就是new出来的那个适配器

父控件(ListView)------ListViewTest.java和listview_test.xml

listview_test.xml详情
这里有三个控件属性

其中,前两个设置了布局,最后一个设置了id,用于获取控件。

ListViewTest.java详情
在这里,框框中的,只是得到了这个listview控件,然后设置了一个适配器。
33行,创建出了适配器对象,
37-41设置适配器对象的数据,
41调用适配器的方法更新了数据。

子视图(Item)------ListviewItemTestAdapter.java和listview_item_test.xml

listview_item_test.xml详情
第四行设置了这个每个子项的高度只有50dp
第八行设置了id

下面是适配器 适配器类

initializeViews()方法用来初始化子项视图的数据

public class ListviewItemTestAdapter extends BaseAdapter {


    private List<String> objects;
    //设置传入的字符串数据

    private Context context;
    //设置一个上下文对象
    private LayoutInflater layoutInflater;
    //设置要传入的子项视图

    public ListviewItemTestAdapter(List<String> objects, Context context) {
        this.objects = objects;
        this.context = context;
        this.layoutInflater = LayoutInflater.from(context);
        //构造方法
    }

//↓这下方三个重构的不重要
    
    @Override
    public int getCount() {
        return objects.size();
    }

    @Override
    public String getItem(int position) {
        return objects.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }
//↑这上方三个不重要,一个是得到子项长度,一个是得到子项对象数据(传的是啥就是啥),一个是得到子项ID.
    
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
//            判断子项视图有没有传进去,没传进去就传进去
            convertView = layoutInflater.inflate(R.layout.listview_item_test, null);
            convertView.setTag(new ViewHolder(convertView));
        }

        initializeViews(position, (ViewHolder) convertView.getTag());
//        初始化了子项视图
        return convertView;
        
    }

    private void initializeViews(int object, ViewHolder holder) {
        //TODO implement
//        下面设置子项视图的各种数据
        
        holder.listviewItem.setText(objects.get(object));       //这里设置了子项中的文本框的文本内容
    }

    protected class ViewHolder {
        private TextView listviewItem;

        public ViewHolder(View view) {
//            这个地方获取到了子项视图中的控件对象
            listviewItem = (TextView) view.findViewById(R.id.listview_item);
        }
    }
}

看注释,注释基本上全部写好了。
什么都不懂就模仿几遍,多写就懂了。
这里就是创建了一个适配器的类,然后实例化出来就可以通过listview控件设置适配器了。

运行

在这里插入图片描述

主要思想

通过子项视图创建一个自己的适配器,然后实例化适配器,再用listview的设置适配器方法设置适配器。

在适配器的构造方法中要求传入数据,数据是会被更改的,假如数据被更改之后,就可以通过适配器的 ’ 通知数据被改变 notifyDataSetChanged() ’ 方法去更新数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值