Android day_06 (ListView的入门使用 了解数据适配Adapter以及打气筒的使用)

本文介绍了Android中ListView的基础使用,包括数据适配器Adapter的原理,重点讲解了getView方法和获取服务的三种方式。此外,还探讨了ListView的优化策略,如设置宽高为填充父窗体以避免奇怪现象。最后,提到了SimpleAdapter和ArrayAdapter的用法,以及它们在布局文件和数据映射中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)getView(int  View ViewGroup )方法的写法以及三中获取打气筒服务的方式

public View getView(int i, View view, ViewGroup viewGroup) {
            //想办法吧 自己创建的布局 转化成一个View对象
            View v;
            if (view == null){
                //创建一个View对象  可以通过打气筒(inflate)把一个布局文件文件转化成View对象
                //【☆☆☆☆】第一种获取打气筒服务的方式
                //第一个参数上下文  第二个想转化的布局文件 第三个为ViewGroup一般不用写null
                //v=View.inflate(getApplicationContext(),R.layout.item,null);
                //【☆☆☆☆】第二种获取打气筒服务的方式
                //v=LayoutInflater.from(getApplicationContext()).inflate(R.layout.item,null);
                //【☆☆☆☆】第三种获取打气筒服务的方式
                LayoutInflater inflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
                v=inflater.inflate(R.layout.item,null);
            }else{
                v=view;
            }
            return v;
        }

2)ListView 的入门及优化

      ListView在定义属性时的注意事项:宽高最好都定义成填充父窗体算是对ListView的优化,否则会有一些奇怪的现象。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv=findViewById(R.id.lv);
        //在ListView显示数据需要调用ListView的数据适配器Adapter
        lv.setAdapter(new MylistAdapter());
    }
    /*定义ListView的数据适配器  需要实现 ListAdapter接口但是因为该接口中未实现的方法太多
     *可以继承一个实现了该接口的类 BaseAdapter
     */
    private class MylistAdapter extends BaseAdapter{
        @Override
        //一共有多少条数据需要显示
        public int getCount() {
            return 50;
        }
        @Override
        //返回指定i位置上的对象  i是从0开始的
        public Object getItem(int i) {
            return null;
        }
        @Override
        // //返回指定i位置上对应的id  i是从0开始的
        public long getItemId(int i) {
            return 0;
        }
        //获取一个View  作为 ListView 的一个条目出现
        public View getView(int i, View view, ViewGroup viewGroup) {
            TextView tv;
             //优化后 如果有缓存的View对象 就不创建新的 TextView直接使用 不会导致溢出
            if (view == null){
                tv=new TextView(MainActivity.this);               
                System.out.println("创建新对象"+i);
            }else{
                tv=(TextView) view;           
                System.out.println("复用历史缓存对象"+i);
            }
            //未优化 当快速滑动界面是可能会出现缓存溢出 导致程序挂掉
            //System.out.println("getView"+i);
            //TextView tv=new TextView(MainActivity.this);
            tv.setText("heheheheheheheheh--------"+i);
            return tv;
        }

3)其他适配器(Adapter)的使用

SimleAdapter的使用第一个参数上下文  第二个 为一个Map 带三个布局文件

第四个显示的列名就是Map的键 第五个在哪里显示写布局的id

ArrAdapter的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值