listview的三种适配器使用(附demo源码)

在这里插入图片描述Listview 的使用
需要4个步骤
1:准备显示页面,也就是一个xml的文件来显示每一列的模式
2:准备数据源,创建好数据
3:实例化适配器,然后把数据传入适配器
4:找到listview组件然后给它设置适配器
适配器分为三种
第一种:Arrayadpter:最简单实现的效果也是最简单的,只需要实例化适配器,然后给这个适配器传入参数就完成了适配器的使用,然后调用listview的setadpter方法就可以使用简单的列表属性
第二种:Simpleadpter:比上一种更复杂一点但是实现的效果更复杂一点,数据的构成也比上一个复杂
public class simpleadapter extends AppCompatActivity {
List<Map<String,Object>> data=new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.list2);
    /**simpleAdapter的使用要比第一种要复杂但是它能实现比第一种更复杂的效果但是无法对里面具体的内容作比较复杂的处理
     * 步骤1:创建布局文件也就是每一行显示的效果
     * 步骤2:准备数据它是一个map的数据
     * 步骤3:找到listview
     * 步骤4;给这个listview设置适配器**/
    String[] from={"name","age","image"};
    int[] to={R.id.tx1,R.id.tx2,R.id.img};
    ListView listView=findViewById(R.id.list2);
    //simpleadapte里一共有五个参数分别为(上下文对象,数据,list得布局文件,数据的名字,数据的位置)
    SimpleAdapter simpleAdapter=new SimpleAdapter(this,data,R.layout.item2,from,to);
    //这个方法调用的数据是给map存数据
    listView.setAdapter(simpleAdapter);

    indate();
}

private void indate() {
    //创建一个map的数据
 Map<String,Object> map1=new HashMap<>();
 map1.put("name","数据1");
 map1.put("age","数据2");
 map1.put("img",R.mipmap.tupian1);

    Map<String,Object> map2=new HashMap<>();
    map2.put("name","数据3");
    map2.put("age","数据4");
    map2.put("img",R.mipmap.tupian2);

    Map<String,Object> map3=new HashMap<>();
    map3.put("name","数据5");
    map3.put("age","数据6");
    map3.put("img",R.mipmap.tupian3);
    Map<String,Object> map4=new HashMap<>();
    map4.put("name","数据7");
    map4.put("age","数据8");
    map4.put("img",R.mipmap.tupian4);

 data.add(map1);
 data.add(map2);
 data.add(map3);
 data.add(map4);
}

}

第三种:Baseadpter:这种适配器使用方法跟前俩种不同,这种适配器的使用方法是新建一个类让它继承适配器,然后实现四种方法,重写其中的俩个方法,new一个你继承的类然后就能像使用其他的适配器一样使用你新生成的类就行了。
这个是我做的demo实例可以自己下载实现了三种适配器与组件对应
创建适配器:
package com.lwh.listview;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

public class myadpter extends BaseAdapter {
private List list;
private Context context;
private List list2;
public myadpter(List list,List list2, Context context){
this.list=list;
this.context=context;
this.list2=list2;
}
@Override
public int getCount() {
return list.size();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //把view与传的参数相连
    convertView= LayoutInflater.from(context).inflate(R.layout.item3,null);
    ImageView imageView=convertView.findViewById(R.id.img);
    imageView.setImageResource(list2.get(position));
    TextView tx1=convertView.findViewById(R.id.tx1);
    tx1.setText(list.get(position));
    TextView tx2=convertView.findViewById(R.id.tx2);
    tx2.setText(list.get(position));
    return convertView;
}

//获取子项
@Override
public Object getItem(int position) {
return position;
}
//获取子项id
@Override
public long getItemId(int position) {
return 0;
}

}
使用适配器
listView.setAdapter(myadpter);
链接:https://pan.baidu.com/s/1-ksuOoKB-Jj7Z50V4ILfUg
提取码:0fmv
复制这段内容后打开百度网盘手机App,操作更方便哦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值