安卓的ListView进阶


前言

酒易的个人博客

本篇衔接ListView入门
点此跳转到安卓的ListView入门


提示:以下是本篇文章正文内容,下面案例可供参考

一、适配器说明

listview的适配器继承BaseAdapter,其中,最关键的点在于,每个item子项的设置。

二、代码解析

1.代码

 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);
        }
    }

关键方法(示例):initializeViews(),修改方法内容,并重构构造方法:

public interface itemOnClick{
        void itemOnClick(String string);
    }
    private itemOnClick itemOnClick;
    private void initializeViews(final int object, ViewHolder holder) {
        //TODO implement
//        下面设置子项视图的各种数据
        holder.listviewItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (itemOnClick!=null){
                    itemOnClick.itemOnClick(objects.get(object));
                }
            }
        });
        holder.listviewItem.setText(objects.get(object));       //这里设置了子项中的文本框的文本内容
    }
public ListviewItemTestAdapter(List<String> objects, Context context, ListviewItemTestAdapter.itemOnClick itemOnClick) {
        this.objects = objects;
        this.context = context;
        this.itemOnClick = itemOnClick;
        //构造方法

    }

上方增加了一个itemOnClick接口,并设置接口的成员变量。
在初始化视图的方法中设置了一个监听,当被单击则调用接口的方法。
接口会在适配器被创建出来的时候重构。

2.创建出接口对象

代码如下(示例):


 listviewItemTestAdapter = new ListviewItemTestAdapter(strings, ListViewTest.this, new ListviewItemTestAdapter.itemOnClick() {
            @Override
            public void itemOnClick(String string) {
                //这个String ,是之前在适配器中所调用的 刚才的适配器中是这么一句。itemOnClick.itemOnClick(objects.get(object));,也就是调用了
                // ,objects.get(object)
                Toast.makeText(ListViewTest.this, "你点击了:"+string, Toast.LENGTH_SHORT).show();
            }
        });
        //创建了一个新的适配器后因构造方法会要求你重写接口。


        listview.setAdapter(listviewItemTestAdapter);

当创建出了一个新的适配器对象不要忘了把适配器对象在ListView控件中设置
listview.setAdapter()


总结

提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了ListView子项的设置。

关键,需要监听的时候,如果外部拿不到一些内部的数据,可以设置接口然后在外部重写出来让其获取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值