设为首页 加入收藏

TOP

[安卓]ListView 与 RecyclerView的比较(一)
2019-09-01 23:27:13 】 浏览:67
Tags:安卓 ListView RecyclerView 比较

ListView与RecyclerView在在app应用非常广泛,相对于其他的view(button textview)来说比较复杂,接下来我将讲一下创建的流程以及两者的不同。


代码来自《第一行代码》

秋天到了,果园大丰收了,现在着急的事情,就是把水果收集好放进仓库里。

ListView

  1. 首先肯定要先把仓库准备好,腾一块地方出来,在布局中添加ListView。

     <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
    
         <ListView
             android:id="@+id/list_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent" >
         </ListView>
    
     </LinearLayout>
  2. 把装水果的框子准备好,创建fruit_item布局。

     <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="horizontal"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
    
         <ImageView
             android:id="@+id/fruit_image"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
    
         <TextView
             android:id="@+id/fruit_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
             android:layout_marginLeft="10dp" />
    
     </LinearLayout>
  3. 主角登场啦,咱们的搬运工,创建类FruitAdapter。

他需要干什么呢?

先贴出源码,下面解释

    package com.example.listviewtest;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.util.List;
    
    public class FruitAdapter extends ArrayAdapter<Fruit> {
    
        private int resourceId;
    
        public FruitAdapter(Context context, int textViewResourceId,
                            List<Fruit> objects) {
            super(context, textViewResourceId, objects);
            resourceId = textViewResourceId;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Fruit fruit = getItem(position); // 获取当前项的Fruit实例
            View view;
            ViewHolder viewHolder;
            if (convertView == null) {
                view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
                viewHolder = new ViewHolder();
                viewHolder.fruitImage = (ImageView) view.findViewById (R.id.fruit_image);
                viewHolder.fruitName = (TextView) view.findViewById (R.id.fruit_name);
                view.setTag(viewHolder); // 将ViewHolder存储在View中
            } else {
                view = convertView;
                viewHolder = (ViewHolder) view.getTag(); // 重新获取ViewHolder
            }
            viewHolder.fruitImage.setImageResource(fruit.getImageId());
            viewHolder.fruitName.setText(fruit.getName());
            return view;
        }
    
        class ViewHolder {
    
            ImageView fruitImage;
    
            TextView fruitName;
    
        }
    
    }

搬运工的工作就是,返回一个装满水果的框框

  • 拿到一个水果
  • 找到一个框框
  • 把水果放到框框里
  • 把框框返回(结局自然回到里仓库)
    1. 拿到一个水果

       Fruit fruit = getItem(position);
    2. 找到一个框框

       View view;
       view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
       ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image)
       TextView fruitName = (TextView) view.findViewById(R.id.
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇手持式停车收费管理系统全套案例.. 下一篇江湖已去,作品长存

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目