每日总结-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