ListView的基础应用

ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式。继承自抽象类 AdapterView。如果我们想要数据以列表的形式显示,就可以考虑使用ListView控件来实现。

最近在学习Android,就想着把自己学到的东西记录下来,一个是希望能够帮助和我一样初学Android而遇到问题的人,在者怕自己学的东西忘了,毕竟自己脑子不好使容易忘。 好了不多说,下面步入正题。

首先xml中引入ListView控件

<ListView
        android:id="@+id/lv_expense"
        style="@style/Animation.AppCompat.DropDownUp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/

我们可以设置ListView的各种属性以达到项目需求,但是对于初学者来说,默认的属性就足够了。 看一下的效果>

listview
可以看到ListView是以垂直方式在项目中显示视图的列表,我们可以将数据按照上面的形式显示出来。
当我们运行之后发现界面上什么都没有,是程序 出错了吗,当然不是,因为如果要显示我们自己的数据,要将数据和ListView进行绑定。

List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>(); //存储数据的数组列表
  int[] image_expense = new int[]{R.mipmap.detail_income, R.mipmap.detail_income , R.mipmap.detail_income }; //定义图片数组
        String[] expense_category = new String[] {"外国语学院2020年学科建设会议", "我校向包联社区建增防疫物资","学校在讲好战役故事中凝聚抗疫力量"};
        String[] expense_money = new String[] {"2020-12=30", "2020-03-01", "2020-03-03"};  //定义显示内容
        //该循序将上面定义的数据内用,添加到Map当中
        for (int i = 0; i < image_expense.length; i++)
        {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("image", image_expense[i]);
            map.put("category", expense_category[i]);
            map.put("time", expense_money[i]);
            listitem.add(map);  //添加数据到map对象中
        }

好了通过上面的操作,我们已经把要显示的数据保存在了map当中,当然保存数据的形式有很多,只是由于map的使用比较简单就选择了map。然后我们通过一个适配器实现数据显示到ListView中。通常来说我们在项目中常常会用到适配器来实现我们的功能,这里我选择了比较简单的SimpleAdapter,它是一个将数据(Data) 填充到 AdapterView(比如我们今天用到的ListView)的中介,进而实现数据的绑定。

 SimpleAdapter adapter = new SimpleAdapter(getActivity()
                , listitem
                , R.layout.fragment_one_item
                , new String[]{"category", "money", "image"}
                , new int[]{R.id.tv_expense_category, R.id.tv_expense_money, R.id.image_expense});     
        ListView listView = (ListView) v.findViewById(R.id.lv_expense);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//设置监听器
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Map<String, Object> map = (Map<String, Object>) parent.getItemAtPosition(position);
                Toast.makeText(getActivity(), map.get("expense_category").toString(), Toast.LENGTH_LONG).show();
            }
        });

上面用到的fragment_one_item文件

<?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">

    <ImageView
        android:id="@+id/image_expense"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:paddingRight="10dp"
        android:paddingBottom="10dp"
        android:adjustViewBounds="true"
        android:maxWidth="72dp"
        android:maxHeight="72dp"/>
    <TextView
        android:id="@+id/tv_expense_category"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="10dp"/>
    <TextView
        android:id="@+id/tv_expense_money"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:text="100yuan"/>
</LinearLayout>

最后运行就能将我们的数据显示出来了。在这里插入图片描述我们看到之前定义的数据就已经显示出来了。这个是我们自己定义一个String类型的显示内容,如果我们想要将数据库中的数据显示出来,并将数据库中的照片显示出来又该怎么做呢。后面我将会讲解如何将数据库中的信息提取出来并显示到ListView中。
https://blog.csdn.net/liyue_199609130/article/details/105100715

发布了4 篇原创文章 · 获赞 1 · 访问量 114

猜你喜欢

转载自blog.csdn.net/liyue_199609130/article/details/105098740