Android开发笔记(九)——ListView
为了更好的属性流程,这里从新建package开始,自己手动填写代码(之前直接新建Activity系统会自动帮忙填好代码和创建布局)
新建一个package listview ,在该包下面新建一个Java Class,

在layout下面新建一个 Layout resource file

在 ListViewActivity.java 中把代码补全

自己写的类这里是不会在 AndroidMainfest.xml 中自动声明的,这里需要手动声明:
<activity android:name=".listview.ListViewActivity"></activity>
之后就和前面的操作一样啦!在 activity_main.xml 中添加一个button用来跳转到ListView展示界面,然后在 MainActivity.java 中添加该按钮的声明。之后就可以在布局文件 activity_list_view.xml 中进行布局啦。
常用属性
在布局文件 activity_list_view.xml 中的布局如下:

可以看到列表的初始样子。
接下来在layout文件下再新建一个layout resource filer用来设计列表想要展示的内容:

进行布局,大体布局如下:

Adapter接口
在ListView包下面新建一个class继承自 BaseAdapter 重写里面的方法:

public class MyListAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mLayoutInflater;
public MyListAdapter(Context context){
this.mContext=context;
mLayoutInflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return 10; //列表的行数
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
static class ViewHolder{
public ImageView imageView;
public TextView tvTitle,tvTime,tvContent;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
convertView=mLayoutInflater.inflate(R.layout.layout_list_item,null);
holder=new ViewHolder();
holder.imageView=convertView.findViewById(R.id.iv);
holder.tvTitle=convertView.findViewById(R.id.tv_title);
holder.tvTime=convertView.findViewById(R.id.tv_time);
holder.tvContent=convertView.findViewById(R.id.tv_content);
convertView.setTag(holder);
}else {
holder= (ViewHolder) convertView.getTag();
}
//给控件赋值
holder.tvTitle.setText("这是标题");
holder.tvTime.setText("2025-01-01");
holder.tvContent.setText("这是内容");
Glide.with(mContext).load("http://p1.pstatp.com/large/166200019850062839d3").into(holder.imageView);
return convertView;
}
}
这里主要重写了 getView 函数,用来控制每一行的样式和数据。
在 ListViewActivity.java 中进行对ListView控件的声明:

其中 setAdapter 用来设置一个适配器, MyListAdapter 是我们自定义的,继承自 BaseAdapter 。
当前的效果:
自定义选中的效果:
在drawable中新建一个资源文件,如下:

设置选中时候变为浅绿色:

在 activity_list_view.xml 中添加一句代码:

运行一下,此时的效果如下:
点击事件和长按事件
在 ListViewActivity.java 中添加一个事件如下:

运行效果:
这里长按的时候两个事件都处理了,只要把 setOnItemLongClickListener 中的 return false 改成 return ture 就可以啦。
这里只是弹出一个Toast事件,实际开发中可能会跳转到别的页面。

浙公网安备 33010602011771号