安卓开发学习——day4

之前做这个页面使用使用的是LinearLayout,今天经过老师的讲解,改用ListView
在这里插入图片描述

新建模板ListActivity2

页面布局:

因为采用的是listview的方式,所以在主页面添加ListView,新建list_item2,用于列表内的布局
【layout/activity_list2.xml】

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context=".ListActivity2">

    <ListView
        android:id="@+id/lv_num_show"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

【layout/list_item2.xml】

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:id="@+id/list_item2"
    android:background="@drawable/custom_border_">

    <!--4.根据列表的样式实现列表下模板-->
    <TextView
        android:id="@+id/tv_number"
        style="@style/list_text_one"
        android:layout_weight="3"
        android:text="6" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="7"
        android:orientation="vertical"
        android:padding="5dp">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="2014-02-19 17:50:35"
            android:textColor="@color/black"
            android:textSize="15sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="Admin"
            android:textColor="@color/black"
            android:textSize="15sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="2014-2-19"
            android:textColor="@color/black"
            android:textSize="15sp" />
    </LinearLayout>

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="center_vertical |right"
        android:text="未审"
        android:textSize="16sp" />

    <Button
        android:id="@+id/btnAudit"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:layout_weight="3"
        android:gravity="center"
        android:text="审核"
        android:textSize="22sp" />
</LinearLayout>

实现列表:

【ListActivity2.java】

package com.example.firemanager;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ListView;

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

public class ListActivity2 extends AppCompatActivity {

    private ListView lvNumShow;

    private List<NumEntity> listNums;

    private NumAdapter numAdapter;

    public void initData() {
        if (listNums == null) {
            listNums = new ArrayList<>();
        }
        // 以后可以从数据库直接调用
        NumEntity number = new NumEntity("1");
        listNums.add(number);
        number = new NumEntity("2");
        listNums.add(number);
        number = new NumEntity("3");
        listNums.add(number);
        number = new NumEntity("4");
        listNums.add(number);
        number = new NumEntity("5");
        listNums.add(number);
        number = new NumEntity("6");
        listNums.add(number);
        number = new NumEntity("7");
        listNums.add(number);
        number = new NumEntity("8");
        listNums.add(number);
        number = new NumEntity("");
        listNums.add(number);
        number = new NumEntity("10");
        listNums.add(number);
        number = new NumEntity("11");
        listNums.add(number);


    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list2);

        lvNumShow = findViewById(R.id.lv_num_show);

        initData();

        numAdapter = new NumAdapter(ListActivity2.this, listNums);
        //将列表和适配器绑定
        lvNumShow.setAdapter(numAdapter);
    }
}

【NumEntity.java】

package com.example.firemanager;

public class NumEntity {
    
    
    private String number;

    public String getNumber() {
    
    
        return number;
    }

    public void setNumber(String number) {
    
    
        this.number = number;
    }

    public NumEntity(String number) {
    
    
        this.number = number;
    }
}

【NumAdapter】

package com.example.firemanager;

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

import java.util.List;

/***
 * 1. 定义自己的适配器
 */
public class NumAdapter extends BaseAdapter {
    
    

    private Context context;
    private List<NumEntity> listNums;
    public NumAdapter(Context context, List<NumEntity> listNums) {
    
    
        this.context = context;
        this.listNums = listNums;
    }

    /***
     * 控制列表显示的条数
     * @return
     */
    @Override
    public int getCount() {
    
    
        if (listNums == null) {
    
    
            return 0;
        } else {
    
    
//            return listNums.size();
            return 7;
        }
    }

    /***
     * 返回第i个位置数据
     * @param
     * @return
     */
    @Override
    public Object getItem(int i) {
    
    
        return listNums.get(i);
    }

    /***
     * 返回第i个位置的id
     * @param
     * @returni
     */
    @Override
    public long getItemId(int i) {
    
    
        return i;
    }

    /***
     * 返回第i个位置的视图
     * @param i
     * @param view
     * @param viewGroup
     * @return
     */
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
    
    
        LayoutInflater inflater = LayoutInflater.from(context);
        view = inflater.inflate(R.layout.list_item2,null);

        TextView tvNumber = view.findViewById(R.id.tv_number);
        NumEntity numEntity = listNums.get(i);
        tvNumber.setText(numEntity.getNumber());
        return view;
    }
}

【manifests】

<activity android:name=".ListActivity2">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

效果展示:

在这里插入图片描述


总结: 列表的使用比其他几个困难很多,对于数据量较大的来说能提高很大的效率。

猜你喜欢

转载自blog.csdn.net/weixin_45936162/article/details/112549249