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,操作更方便哦