网站首页 > 资源文章 正文
listview使用,多的不管,只要知道,
1、在Activity_main里,要有这个控件。
2、创建一个listview里的listitem界面,
3、创建一个BaseAdapter类来适配listitem界面并传导数据,执行相应操作。
第一步,在Activity_main里添加listview组件。
<ListView
android:id="@+id/list_view"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
第二步,创建一个item界面,并在里面创建一个TextView来显示我们要的数据。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/fruit_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
第三步,创建一个继承于BaseAdapter类的Adpter类,并重写里面需要的4个方法。
public class MyAdpter extends BaseAdapter {
private List<Fruit> data;//下面有这个类,这是设立一个Fruit类的集合,
private Context context;//当前上下文。
public MyAdpter(List<Fruit> data, Context context) {//Adpter类的构造函数
this.data = data;
this.context = context;
}
@Override//系统自动创建
public int getCount() {
return data.size();//返回数据集的数量
}
@Override//系统自动创建
public Object getItem(int position) {
return data[position];
}
@Override//系统自动创建
public long getItemId(int position) {
return position;
}
@Override//系统自动创建
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;//一个内部类,用来存放Textview对象。
if(convertView==null){//如果为null,说明这个listitem对象没有被创建,那就创建 这个view对象。
vh=new ViewHolder();
//这里就得到了一个listitem的界面
convertView=LayoutInflater.from(context).inflate(R.layout.fruit_item,parent,false);
//得到这个listitem界面里的textview对象
vh.textView=convertView.findViewById(R.id.fruit_name);
convertView.setTag(vh);//把这个内部类对象存到listitem这个界面中去
} else{//如果已经创建了一个listitem的Layout界面的话,就只直接从取出内部类对象
vh=(ViewHolder) convertView.getTag();
}
vh.textView.setText(data.get(position).getName());//设置listitem里的TextView的值
Log.e("hehe", "getView: "+position );//这个是打印测试
return convertView;
}
private final class ViewHolder{//内部类
TextView textView;
}
}
public class Fruit {//实体类,里面可以添加别的参数,比如weight/color之类的
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
第四步,在MainActivity里进行操作。
//本来这个数据可能是来自外部,现在这里用for循环创造10个。
for(int i=0;i<10;i++){
Fruit fruit=new Fruit();
fruit.setName("水果"+i);
data.add(fruit);//把数据放到集合里
}
ListView listView = findViewById(R.id.list_view);//这个是得到了主界面里的ListView控件。
listView.setAdapter(new MyAdpter(data,this));//把控件传到新建的Adpter对象中
//给这个对象集加一个点击监听
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("hehe", "onItemClick: "+position );
}
});
猜你喜欢
- 2024-12-10 一个监控PLC的Android应用的开发过程-2
- 2024-12-10 ListView和RecyclerView的区别
- 2024-12-10 轻松学会:滑动组件ListView和GridView的使用
- 2024-12-10 常见面试题之ListView的复用及如何优化
- 2024-12-10 那些技术—Listview的性能提高篇
- 2024-12-10 Excel VBA,通过ListView查阅工作表数据、外部数据源数据(1/5)
- 2024-12-10 Android中ListView的使用方法
- 2024-12-10 PC SDK二次开发:基于C#语言编写的ABB机器人控制器扫描程序
- 2024-12-10 Excel vba 如何导入导出工作表,数据管理方法介绍
- 2024-12-10 C#通过API接口读取KingSCADA实时库数据
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)