您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

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

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

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);/*显示*/
    }
}

运行!!!!!!

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