Listview

本文详细介绍如何在Android开发中使用ListView控件,包括其关键属性如listSelector、divider设置,以及如何通过本地数据创建Bean类并实现数据填充和MyAdapter的使用。通过实例演示,帮助读者掌握ListView的基本操作和定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、功能属性

在Android开发中,ListView控件是一个比较常用的控件,他以列表的形式展现数据的内容,并且能根据列表的高度,自适应屏幕的显示。ListView控件的样式是由它的属性决定的,它的常用属性介绍如下:

ListView控件的常用属性
属性功能
android:listSelector当条目被点击后,改变条目的背景颜色
android:divider设置分割线颜色
android:scrollbars显示滚动条目
android:dividerHeight设置分割线高度
android:fadingEdge去掉上边和下边的黑色阴影

下面通过一个案例,进行熟悉掌握ListView控件

二、案例

前提说明:这个制作的这个程序,为了方便,采用的是本地数据(一般情况下是获取网上数据),通过创建Bean类用于获取数据

首先,在res/layout中创建一个activity_main(我创建的是linearlayout_listview01)和list_item01.然后代码如下:

linearlayout_listview01.xml

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

</LinearLayout>

list_item01.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
<!--    这个布局相当于布局linearlayout_listview02一个条目,每个条目的布局都是一样的,只要复用进行-->
<!--    数据一般是从网上获取的,但是这次为了方便学习,用本地创建Bean类进行-->
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
              android:id="@+id/tv_two"
              android:textSize="30sp"/>

</LinearLayout>

然后在Java文件中创建了Bean类和MainActivity类,为了进行数据填充,我还创建了MyAdapter类,代码如下:

Bean.java

package com.example.myapplication6;

public class Bean {
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

MainActivity.java

package com.example.myapplication6;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {
    private List<Bean> data=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.linearlayout_listview);
//        利用for循环获取数据
        for (int i=0;i<100;i++){
            Bean bean=new Bean();
            bean.setName("登山的你"+i);
            data.add(bean);
    }
//       初始化,拿到listview对象
        ListView listView=findViewById(R.id.lv);
//        进行数据的填充
        listView.setAdapter(new MyAdapter(data,this));

    }
}


MyAdapter.java

package com.example.myapplication6;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

public class MyAdapter extends BaseAdapter {
    private List<Bean> data;
    private Context context;

    public MyAdapter(List<Bean> data, Context context) {
        this.data = data;
        this.context = context;
    }

    public MyAdapter() {
    }
//    获取总共的数据

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
//    获取item
    public Object getItem(int i) {
        return null;
    }

    @Override
//    获取id
    public long getItemId(int i) {
        return i;
    }

    @Override
//    返回item的条目,然后进行设置
    public View getView(int i, View view, ViewGroup viewGroup) {
//        进行复用,防止view反复创建
        if(view==null){
//            拿到item条目的布局,inflate进行渲染item,
            view=LayoutInflater.from(context).inflate(R.layout.list_item01,viewGroup,false);
        }
//        拿到text
        TextView textView=view.findViewById(R.id.tv_two);
        textView.setText(data.get(i).getName());
        Log.e("leg","getview"+i);

        return view;
    }
}

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值