android中自定义ListView界面
16lz
2021-01-25
欢迎访问我的个人博客 https://jialaner.cn/
(个人学习理解,如有不同,请在下方留言哦)
不管是在移动端还是PC端,对于ListView控件也就是列表的使用是非常普遍的,列表的使用弥补了显示器定量化的缺陷,由于ListView是一个可以上下滑动的控件,这样具有滑动效果的控件可以可以加载比较多的数据内容。具体的效果就是这样的。
做一个类似QQ消息的列表,作为学习事例。在开始Android开发中,拥有熟练的Java使用功底的技能,绝对是满满的优势。
一.定义一个实体类 LinkMain,作为 ListView 适配器的适配类型。打开QQ消息中我们可以看到列表中每项都有着四个属性:头像、备注名,聊天内容和时间。
所以在实体类中我们也将有着四个属性 headPortrait , name ,news , time
/** * Created by Administrator-Liu on 2018/8/27. */public class LinkMain { private int headPortrait; private String name; private String news; private String time; public LinkMain(int headPortrait, String name, String news, String time){ this.headPortrait = headPortrait; this.name = name; this.news = news; this.time = time; } public int getHeadPortrait() { return headPortrait; } public String getName() { return name; } public String getNews() { return news; } public String getTime() { return time; }}
二.为 ListView 的子项指定一个我们自定义的布局 linkmain_item.xml。
<?xml version="1.0" encoding="utf-8"?>
三.创建一个自定义的适配器 MyAdapter,这个适配器继承自 ArrayAdapter。重写构造方法和 getView 方法。
/** * Created by Administrator-Liu on 2018/8/27. */public class MyAdapter extends ArrayAdapter{ public MyAdapter(Context context, int resource, List objects) { super(context, resource, objects); } @Override public View getView(int position, View convertView, ViewGroup parent) { LinkMain linkeMain = (LinkMain)getItem(position); View view = LayoutInflater.from(getContext()).inflate(R.layout.linkmain_item, null); ImageView headPortrait = (ImageView)view.findViewById(R.id.headPortrait); TextView name = (TextView)view.findViewById(R.id.name); TextView news = (TextView)view.findViewById(R.id.news); TextView time = (TextView)view.findViewById(R.id.time); headPortrait.setImageResource(linkeMain.getHeadPortrait()); name.setText(linkeMain.getName()); news.setText(linkeMain.getNews()); time.setText(linkeMain.getTime()); return view; }}
四.在MainActivity中编写,初始化水果数据
public class MainActivity extends Activity { private List linkMains = new ArrayList<>(); private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.init(); MyAdapter myAdapter = new MyAdapter(this,R.layout.linkmain_item,linkMains); listView = (ListView)this.findViewById(R.id.mylistlist); listView.setAdapter(myAdapter); } /*初始化数据*/ private void init(){ linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"我","还不睡","11:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"你","睡了","12:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"她","在吗","13:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"它","拜拜","7:50")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"他","爱你","16:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"亲","早点睡","11:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"爱人","睡觉了","3:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"亲人","护手霜","6:00")); linkMains.add(new LinkMain(R.drawable.popup_icon_minus_pres,"情人","想你","9:00")); }}
ListView的简单使用,运行结果如下。头像直接使用的是圆角图片,未进行ImageView的圆角处理。
做自己的一个学习心得笔记。
更多相关文章
- “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
- Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android开发笔记(八十五)手机数据库Realm
- Android(安卓)UI系列-----LinearLayout的综合使用
- Android布局文件
- Android(安卓)获取Google Weather API 并通过Xml和JSON解析数据
- Android忘记密码功能实现
- Android+HTML 针对android一个控件TextView中文字颜色、大小不同