Android-ListView列表适配器

BaseAdapter适配器:

activity_main.xml:
<ListView
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>

list_item.xml:
<ImageView
    android:id="@+id/iv"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@mipmap/ic_launcher"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="vertical">
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hahah"
        android:layout_marginTop="20dp"
        android:textSize="20dp"/>
    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="xixiix"
        android:layout_marginTop="10dp"
        android:textSize="20dp"/>
</LinearLayout>


MainActivity: 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    1.定义数据
    private String[] names = {"张三", "李四", "王五"};
    private String[] words = {"我是张三,你好", "我是李四,你好", "我是王五,你好"};
    private int[] images = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
    //定义列表
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);

        6.创建一个适配器对象
        mybaseadapter mybase = new mybaseadapter();
        ///7.将适配器添加进列表控件
        lv.setAdapter(mybase);

    }

    2.定义一个适配器,让它继承自BaseAdapter,因为BaseAdapter是一个抽象类,不能直接使用
    class mybaseadapter extends BaseAdapter {

        @Override
        public int getCount() {
            return names.length;
        }

        @Override
        public Object getItem(int position) {
            return names[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            3.将条目布局变成View对象
            View view = View.inflate(MainActivity.this, R.layout.list_item, null);
            4.找到View对象中的控件
            TextView text1 = (TextView) view.findViewById(R.id.text1);
            TextView text2 = (TextView) view.findViewById(R.id.text2);
            ImageView iv = (ImageView) view.findViewById(R.id.iv);
            5.给每个控件赋值
            text1.setText(names[position]);
            text2.setText(words[position]);
            iv.setBackgroundResource(images[position]);

            return view;
        }
    }

}





SimpleAdapter适配器:

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class MainActivity extends Activity {

    private List<Map<String, Object>> lists;
    private ListView listView;
    //1.定义数据
    private String[] theme = {"张三", "李四", "王五"};
    private String[] content = {"我是张三,你好", "我是李四,你好", "我是王五,你好"};
    private int[] imageViews = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
    private SimpleAdapter sa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //定义列表
        listView = (ListView) findViewById(R.id.lv);
        //2.准备数据源:List<Map<String, Object>>类型的,SimpleAdapter适配器参数的第2项
        lists = new ArrayList<>();
        //3.向数据源中添加数据
        for (int i = 0; i < theme.length; i++) {
            //创建HashMap<>对象
            Map<String, Object> map = new HashMap<>();
            //向map中添加数据
            map.put("image", imageViews[i]);
            map.put("theme", theme[i]);
            map.put("content", content[i]);
            //将map添加进数据源中
            lists.add(map);
        }

        //4.创建SimpleAdapter对象,向里面传参
        //参数1.上下文对象 2.数据源   3.条目布局的id   4.map中的key值(从哪里来)   5.item条目中的控件(到哪里去)
        //  参数  4  和   5    要对应
        sa = new SimpleAdapter(MainActivity.this, lists, R.layout.list_item
                , new String[]{"image", "theme", "content"}
                , new int[]{R.id.iv, R.id.text1, R.id.text2});
        listView.setAdapter(sa);
    }
}

RecyclerView控件:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


    1.定义数据
    private String[] names = {"张三", "李四", "王五"};
    private String[] words = {"我是张三,你好", "我是李四,你好", "我是王五,你好"};
    private int[] images = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //2.实例化RecyclerView控件
        recyclerView = (RecyclerView) findViewById(R.id.rv);
        //3.定义管理器,设置排列方向,并给recyclerView添加管理器
        LinearLayoutManager LayoutManager = new LinearLayoutManager(this);
        LayoutManager.setOrientation(LayoutManager.VERTICAL);
        recyclerView.setLayoutManager(LayoutManager);

        HomeAadpter homeAadpter = new HomeAadpter();
        recyclerView.setAdapter(homeAadpter);

    }

    //4.创建类继承RecyclerView.Adapter,并定义一个泛型,实现3个方法,创建MyViewHolder类
    class HomeAadpter extends RecyclerView.Adapter<HomeAadpter.MyViewHolder> {

        //6.将布局文件变成View对象,传给MyViewHolder类
        // 创建MyViewHolder的对象(holder),并返回
        //holder里面包含MyViewHolder类中定义的控件
        @Override
        public HomeAadpter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            MyViewHolder holder = new MyViewHolder(View.inflate(MainActivity.this, R.layout.list_item, null));
            return holder;
        }
        //7.将数据设置到对应的控件上
        @Override
        public void onBindViewHolder(HomeAadpter.MyViewHolder holder, int position) {
            holder.text1.setText(names[position]);
            holder.text2.setText(words[position]);
            holder.iv.setImageResource(images[position]);
        }
        //8.返回条目数
        @Override
        public int getItemCount() {
            return names.length;
        }
        //5.创建MyViewHolder类,继承RecyclerView.ViewHolder,重写构造方法
        //在该类中获取条目布局中的控件
        public class MyViewHolder extends RecyclerView.ViewHolder {
            TextView text1, text2;
            ImageView iv;
            //重写构造方法
            public MyViewHolder(View itemView) {
                super(itemView);
                text1 = (TextView) itemView.findViewById(R.id.text1);
                text2 = (TextView) itemView.findViewById(R.id.text2);
                iv = (ImageView) itemView.findViewById(R.id.iv);
            }
        }
    }
}

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    1.定义数据
    private String[] names = {"桌子", "椅子", "板凳","桌子", "椅子", "板凳","桌子", "椅子", "板凳","桌子", "椅子", "板凳"};
    private String[] words = {"10000", "22223", "23333333","10000", "22223", "23333333","10000", "22223", "23333333","10000", "22223", "23333333"};
    private int[] images = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round,R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round,R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round,R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};

    //定义列表
    private ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化列表
        lv = (ListView) findViewById(R.id.lv);
        mybaseadapter mybase = new mybaseadapter();
        lv.setAdapter(mybase);
    }
    //2.创建ViewHolder类,把item条目中的控件声明在这个类里
    class ViewHolder{
        TextView text1,text2;
        ImageView iv;
    }
    3.定义一个适配器,让它继承自BaseAdapter,因为BaseAdapter是一个抽象类,不能直接使用
    class mybaseadapter extends BaseAdapter {
        @Override
        public int getCount() {
            return names.length;
        }

        @Override
        public Object getItem(int position) {
            return names[position];
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            //4.当getView方法执行的时候,就把这个ViewHolder定义出来
            ViewHolder viewHolder;
            //5.当convertView等于空时,创建一个当convertView
            if(convertView == null){
                //将item布局转换为一个View对象
                convertView = View.inflate(MainActivity.this, R.layout.list_item, null);
                //当convertView等于空时,new一个ViewHolder实例
                viewHolder = new ViewHolder();
                //因为holder里面定义了一些变量,给它们赋值
                viewHolder.text1= (TextView) convertView.findViewById(R.id.text1);
                viewHolder.text2= (TextView) convertView.findViewById(R.id.text2);
                viewHolder.iv= (ImageView) convertView.findViewById(R.id.iv);
                //setTag方法给convertView加标签
                convertView.setTag(viewHolder);
            }else{
                //6.当convertView存在时,获取ViewHolder类的对象(类的对象里面有变量)
                viewHolder = (ViewHolder) convertView.getTag();
            }
            //7.设置数据
            viewHolder.text1.setText(names[position]);
            viewHolder.text2.setText(words[position]);
            viewHolder.iv.setBackgroundResource(images[position]);

            return convertView;
        }
    }

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值