0
点赞
收藏
分享

微信扫一扫

【android-使用ListView设置列表,能够滑动和点击】

陆佃 2022-04-23 阅读 49
androidjava

android-使用ListView设置列表,能够滑动和点击

效果
在这里插入图片描述

一,设置一下基本布局

在layout文件夹下

<LinearLayout android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListView
        android:id="@+id/lv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

二,设置一下其中的小列表布局,为了方便内容设置为text

在layout文件夹下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/textview"
        android:textSize="30dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

三,设置一个Bean类,为每一个小列表存储数据

package com.example.layout;

import androidx.annotation.NonNull;

public class Bean {
    public String getName() {
        return name;
    }

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

    public Bean(String name) {
        this.name = name;
    }
    String name;
}

四,为列表填充数据,获取listView ,向其中渲染布局

用循环beanlist 中为我们想要列表表示的数据,获取listView 后,向其中添加适配器,这里需要自己定义,下一步介绍

private List<Bean> beanlist =new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         for(int i=0;i<100;i++)
         {
             Bean bean = new Bean("hello"+i);
//             bean.setName("hello"+i);
             beanlist.add(bean);
         }
         ListView listView = findViewById(R.id.lv);

         listView.setAdapter(new myadapter(beanlist,this));


    }

五,适配器myadapter


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;
    }

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

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }
    //获取视图View  即返回每一个设置了数据的Item小框
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if(view == null)
        {
            //这个view就是那个小的条目,并且小条目是一直不但复用的,所以避免多次创建
            //item==null时,再获取Item条目的布局
            // LayoutInflater.from(context) 获取LayoutInflater      inflate()   渲染返回布局
           view = LayoutInflater.from(context).inflate(R.layout.line_view,viewGroup,false);
        }

        TextView textview = view.findViewById(R.id.textview);
        textview.setText((data.get(i).getName()));
        Log.e("mm", "getView"+i);
        return view;
    }
}

六,为事件设置点击

         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                 Log.e("mm", "onItemClick"+i );
             }
         });
举报

相关推荐

0 条评论