2025年4月1日 星期二 乙巳(蛇)年 正月初二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

ListView简单使用实例——新闻页面demo

时间:01-12来源:作者:点击数:32

ListView 是 Android 系统为我们提供的一种列表显示的一种控件。

使用它可以用来显示我们常见的列表形式,继承自抽象类 AdapterView。

常用适配器介绍
  • ArrayAdapter:简单、易用的 Adapter,用于将数组数据作为数据源绑定到列表项中。支持泛型操作
  • SimpleAdapter:相比 ArrayAdapter 来说,功能比较强大,可以将数据源的数据一一的绑定到 item 中的 view 中。
  • CursorAdapter:用于绑定游标(直接从数据库取出数据)作为列表项的数据源,和数据库有关系,不常用。
  • BaseAdapter:这个是我们在实际开发中经常用到的,我们需要继承 BaseAdapter 来自定义我们自己的适配器

新闻app页面demo

下图就是我们要实现的效果

在这里插入图片描述
1.写好布局

主布局文件 一个listview

在布局中加入ListView 控件,并为ListView 指定了一个id 设置成match_parent 占满整个空间

  • <?xml version="1.0" encoding="utf-8"?>
  • <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="match_parent"
  • android:layout_height="match_parent"
  • android:orientation="vertical"
  • >
  • <ListView
  • android:layout_width="match_parent"
  • android:layout_height="match_parent"
  • android:id="@+id/lv_demo"/>
  • </LinearLayout>

单个item布局文件

  • <?xml version="1.0" encoding="utf-8"?>
  • <RelativeLayout
  • xmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="match_parent"
  • android:layout_height="wrap_content"
  • android:padding="5dp">
  • <ImageView
  • android:background="@mipmap/ic_launcher_round"
  • android:id="@+id/iv_photo"
  • android:layout_width="70dp"
  • android:layout_height="70dp"/>
  • <TextView
  • android:id="@+id/tv_title"
  • android:textSize="20dp"
  • android:layout_width="match_parent"
  • android:layout_height="wrap_content"
  • android:layout_toRightOf="@id/iv_photo"
  • android:layout_marginLeft="5dp"
  • android:text="title"
  • android:textColor="#000"/>
  • <TextView
  • android:id="@+id/tv_type"
  • android:layout_width="wrap_content"
  • android:layout_height="wrap_content"
  • android:text="type"
  • android:textSize="15dp"
  • android:textColor="#6B1F1F"
  • android:layout_alignParentRight="true"
  • android:layout_alignBottom="@id/iv_photo"/>
  • </RelativeLayout>
2.定义自己的适配器MyAdapter

定义一个适配器继承自BaseAdapter

重写构造方法和 getView 方法

  • public class MyAdapter extends BaseAdapter {
  • private Context context;
  • private String[] title;
  • private String[] type;
  • private int[] photo;
  • public MyAdapter(Context context, String[] title, String[] type, int[] photo) {
  • this.context = context;
  • this.title = title;
  • this.type = type;
  • this.photo = photo;
  • }
  • @Override
  • public int getCount() {
  • return title.length;
  • }
  • @Override
  • public Object getItem(int position) {
  • return null;
  • }
  • @Override
  • public long getItemId(int position) {
  • return 0;
  • }
  • @Override
  • public View getView(int position, View convertView, ViewGroup parent) {
  • ViewHolder holder;
  • if (convertView ==null){
  • convertView=View.inflate(this.context,R.layout.item_demo,null);
  • holder = new ViewHolder();
  • holder.title=(TextView) convertView.findViewById(R.id.tv_title);
  • holder.type=(TextView) convertView.findViewById(R.id.tv_type);
  • holder.photo=(ImageView) convertView.findViewById(R.id.iv_photo);
  • convertView.setTag(holder);//*将holder和convertview绑定*//*
  • }else {
  • holder=(ViewHolder) convertView.getTag();
  • }
  • holder.title.setText(title[position]);
  • holder.type.setText(type[position]);
  • holder.photo.setImageResource(photo[position]);
  • return convertView;
  • }
  • public static class ViewHolder{//*ViewHolder类是MyAdapter的静态成员*//
  • TextView title;
  • TextView type;
  • ImageView photo;
  • }
  • }

inflate方法这里有三个参数:

第一个参数是上下文,就是当前的Activity, 第二个参数是填充的根视图,就是将每一条数据都显示在这个 view上面;第三个参数就是是否将载入的视图绑定到根视图中。

3.写好数据

在Mainactivity写好三种数据,title,type,photo

当然这种数据是应该联网拿的,这里就手写几个数据啦!

  • public class MainActivity extends AppCompatActivity {
  • private ListView lv_demo;
  • private String[] title={"2019年国庆大阅兵","大众汽车最新报价","十九大在北京隆重召开"};
  • private String[] type={"军事","经济","政治"};
  • private int[] photo={R.mipmap.p1,R.mipmap.p2,R.mipmap.p3};
  • @Override
  • protected void onCreate(Bundle savedInstanceState) {
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.activity_main);
  • lv_demo = (ListView) findViewById(R.id.lv_demo);
  • MyAdapter myAdapter = new MyAdapter(this,title,type,photo);
  • lv_demo.setAdapter(myAdapter);/*显示*/
  • }
  • }

运行!!!!!!

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门