每日总结-23.3.20

3月20日总结

  Android studio 中 ListView 的 BaseAdapter用法。

  根据BaseAdapter重写一个自己的MyAdapter,利用MyAdapter来实现使用ListView列表化列出数据。

  效果如下:

  

 

实现方法

  先写两个界面,第一个为调用的主页面(activity_meirizongjiejilu1.xml),第二个为展示在主页面ListView页面上的单元(list_item3.xml),代码与效果如下:


<!-- 主页面(activity_meirizongjiejilu1.xml) -->
<?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"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:textSize="20dp"
        android:text="全部数据"
        android:textColor="#000000"
        android:textStyle="bold" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <TextView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:text="" />
        <TextView
            android:layout_width="80dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:textSize="15dp"
            android:text="班级"
            android:textColor="@color/shentianlan" />
        <TextView
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:textSize="15dp"
            android:text="学号"
            android:textColor="@color/shentianlan" />
        <TextView
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:textSize="15dp"
            android:text="姓名"
            android:textColor="@color/shentianlan" />
        <TextView
            android:layout_width="70dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:textSize="15dp"
            android:text="发表次数"
            android:textColor="@color/shentianlan" />
    </LinearLayout>

    <ListView
        android:id="@+id/jilu_abc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />
</LinearLayout>

<!-- 单元(list_item3.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"
    android:layout_width="match_parent"
    android:layout_height="70dp">

    <TextView
        android:id="@+id/jilu_xuhao"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:gravity="center"
        android:text="1"
        android:textSize="20dp" />


    <TextView
        android:id="@+id/jilu_banji"
        android:layout_width="80dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:gravity="center"
        android:text="班级"
        android:textSize="15dp" />

    <TextView
        android:id="@+id/jilu_xuehao"
        android:layout_width="100dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:gravity="center"
        android:text="学号"
        android:textSize="15dp" />

    <TextView
        android:id="@+id/jilu_xingming"
        android:layout_width="100dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:gravity="center"
        android:text="姓名"
        android:textSize="15dp" />

    <TextView
        android:id="@+id/jilu_cishu"
        android:layout_width="60dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:gravity="center"
        android:text="次数"
        android:textSize="15dp" />

</LinearLayout>

效果:左为主页面(activity_meirizongjiejilu1.xml),右为单元(list_item3.xml)

java代码部分

  最终效果是将单元复制插入到主界面的Item处。

  MyAdapter3代码如下:

package com.example.daka1;

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;

public class MyAdapter3 extends BaseAdapter {

    public List<Userdakapd> data;
    private Context context;

    /*构造函数,将外部传进来的List数据存入类中*/
    public MyAdapter3(List<Userdakapd> data, Context context) {
        this.data = data;
        this.context = context;
    }

    @Override
    public int getCount() {
        return data.size();//获取data的长度
    }

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

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if (view == null){              //防止view不停的新建
            view = LayoutInflater.from(context).inflate(R.layout.list_item3,viewGroup,false);
        }
        /*获取xml界面的各个id*/
        TextView xuhao = view.findViewById(R.id.jilu_xuhao);
        TextView banji = view.findViewById(R.id.jilu_banji);
        TextView xuehao = view.findViewById(R.id.jilu_xuehao);
        TextView xingming = view.findViewById(R.id.jilu_xingming);
        TextView cishu = view.findViewById(R.id.jilu_cishu);

        /*将单元内的TextView赋值*/
        xuhao.setText(data.get(i).id+"");//将int转化为String
        banji.setText(data.get(i).banji);
        xuehao.setText(data.get(i).xuehao);
        xingming.setText(data.get(i).xingming);
        cishu.setText(data.get(i).cishu+"");//将int转化为String
        return view;
    }
    
}

Meirizongjiejilu1代码如下:

package com.example.daka1;

import androidx.appcompat.app.AppCompatActivity;

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

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

public class Meirizongjiejilu1 extends AppCompatActivity {

    private List<Userdakapd> data = new ArrayList<>(); //实例化List准备存储数据
    private ListView neirong1;//声明ListView实例

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_meirizongjiejilu1);

        Thesql thesql = new Thesql(this);//实例化数据库连接类

        neirong1=findViewById(R.id.jilu_abc);//获取ListView的xml界面id

        Userpd[] userpds = thesql.chaxunalluser();
        Userdakapd[] userdakapds= new Userdakapd[userpds.length];
        for(int i=0;i<userpds.length;i++)
        {
            userdakapds[i]=new Userdakapd();
            int n = thesql.Getuserdakacishu(userpds[i].yonghuming);
            userdakapds[i].banji=userpds[i].banji;
            userdakapds[i].xingming=userpds[i].yonghuming;
            userdakapds[i].xuehao=userpds[i].xuehao;
            userdakapds[i].cishu=n;
        }
        /*以上为将所需要的所有数据从数据库中查出来
        * Userdakapd为用户打卡记录的Bean类
        * 其中包括:
        * public int id;             id
        * public String banji;       班级
        * public String xuehao;      学号
        * public String xingming;    姓名
        * public int cishu;          打卡次数
        * 分别对应list_item3.xml中所需要展示的数据
        * Thesql和Userpd均为自己所写,命名为个人习惯*/

        /*通过循环将所有数据存入List中*/
        for (int i=0; i<userdakapds.length;i++)
        {
            Userdakapd bean = userdakapds[i];
            bean.id=i+1;
            data.add(bean);//通过add把数据加入到data里面
        }
        /*将ListView所展示的内容设置为MyAdapter3所写内容*/
        neirong1.setAdapter(new MyAdapter3(data,this));
    }
}

 

参考:1.(Android Studio 的ListView 的用法):https://blog.csdn.net/aasd23/article/details/123511865

2.(Android Studio App入门之列表视图ListView的讲解及实战):https://blog.csdn.net/jiebaoshayebuhui/article/details/127759660

3.(Android Studio 实现商品列表和详情界面{学习记录3}):https://www.cnblogs.com/ILEQ/p/16073238.html

 

 

posted @ 2023-03-20 21:07  lao_bing  阅读(19)  评论(0)    收藏  举报