Android 基础开发组件ListView列表

1.前端列表样式

list_view.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  android:layout_height="match_parent">
  <LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent" tools:ignore="MissingConstraints">
    <ListView
      android:id="@+id/lv"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>
  </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

主要显示列表,列表的子项为列表项,列表项也可以是一个页面

2.前端列表项样式

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintTop_toTopOf="parent">
    <TextView
      android:id="@+id/tv"
      android:textSize="20sp"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>
  </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

3.创建Bean.java类

这个主要是存储页面中全局变量的方法
Bean.java

package com.weijun901.app;

public class Bean {
  String name;

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

4.MylistView.java

package com.weijun901.app;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;

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

public class MyListView extends AppCompatActivity {
  //4.1创建全局变量 列表(空),变量名为:data
  private List<Bean> data = new ArrayList<>();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_view);
    //4.2利用for循环往列表中添加数据,从1-100
    for (int i = 1; i <= 100; i++) {
        //new一个Bean对象
        Bean bean = new Bean();
        //用其中的方法进行数据设置
        bean.setName("构件" + i);
        //将数据填充到data列表
        data.add(bean);
    }
    //4.3拿到ListView对象
    ListView listView = findViewById(R.id.lv);
	//4.4用适配器渲染listview层
    listView.setAdapter(new MyAdapter(data,this));
  }
}

5.MyAdapter.java

适配器继承BaseAdapter类,后有红线,在红线单词处,Alt+回车,选择实现方法,然后就会实现以下4种方法

package com.weijun901.app;

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 {
  //5.3创建列表变量,内容变量
  private List<Bean> data;
  private Context context;
  //5.4创建构造方法
  public MyAdapter(List<Bean> data, Context context) {
    this.data = data;
    this.context = context;
  }

  @Override
  //5.1获取总数据
  public int getCount() {
    return data.size();
  }
  //5.1获取item项目
  @Override
  public Object getItem(int position) {
    return null;
  }
  //5.1获取item项目的id
  @Override
  public long getItemId(int position) {
    return position;
  }
  //5.1获取这个view,返回item条目渲染到listview
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    //7.1创建ViewHolder对象
    ViewHolder viewHolder;
    //5.3如果等于空则创建,否则不创建
    if (convertView == null){
      //7.2创建ViewHolder对象
      viewHolder = new ViewHolder();
      //5.2先拿到条目布局给convertView
      convertView = LayoutInflater.from(context).inflate(R.layout.list_item,parent,false);
      //5.4再拿到textView
      //7.3让这个对象去获取id(textView放入viewHolder)
      viewHolder.textView = convertView.findViewById(R.id.tv);
      //7.4viewHolder放入convertView
      convertView.setTag(viewHolder);
    } else {
      viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.textView.setText(data.get(position).getName());

    Log.e("june", "getView: "+ position);

    return convertView;
  }
//7.创建ViewHolder类,里面写list_item里面的控件
  private final class ViewHolder{
    TextView textView;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天吼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值