一、实验目的
掌握ListView控件和Recyclerview的基本使用方式。
掌握使用ArrayAdapter、SimpleAdapter、BaseAdapter实现填充数据。
二、实验指导
1、写UI界面 xml文件 ListView
2、寻找ListView(初始化)
3、实现ListView的数据适配器adapter
4、给listView设置adapter
5、将模拟器运行结果截图到word文档中,并将核心代码复制到word文档中。
三、实验内容
使用ListView或Recyclerview控件结合适配器的使用实现类似学习强国界面效果。其中自定义的item界面效果及素材等资源可自己发挥。
四、模拟器效果截图
五、实验源代码
BasePerson.java
package com.example.myapplication02;
public class BasePerson {
private int icno;
private String title;
private String content;
public int getIcno() {
return icno;
}
public void setIcno(int icno) {
this.icno = icno;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
BaseAdapterL.java
package com.example.myapplication02;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class BaseAdapterL extends BaseAdapter {
private List<BasePerson> PList;
private Context context;
private int LyId;
public BaseAdapterL(List<BasePerson> PList, Context context, int LyId) {
this.PList = PList;
this.context = context;
this.LyId = LyId;
}
@Override
public int getCount() {
return PList.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
if (view == null){
holder = new ViewHolder();
view = View.inflate(context,LyId,null);
holder.imageView = view.findViewById(R.id.imageView);
holder.textView2 = view.findViewById(R.id.textView2);
holder.textView = view.findViewById(R.id.textView);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
holder.imageView.setImageResource(PList.get(i).getIcno());
holder.textView2.setText(PList.get(i).getTitle());
holder.textView.setText(PList.get(i).getContent());
return view;
}
class ViewHolder{
ImageView imageView;
TextView textView;
TextView textView2;
}
}
BaseMain.java
package com.example.myapplication02;
import android.os.Bundle;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
public class BaseMain extends AppCompatActivity {
private ListView lv;
private List<BasePerson> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.larrayadapter);
lv=findViewById(R.id.lv);
BasePerson BP1 = new BasePerson();
BP1.setIcno(R.drawable.shangqiu01);
BP1.setTitle("2023年3月30日");
BP1.setContent("个人爱好:好好学习,天天向上!");
BasePerson BP2 = new BasePerson();
BP2.setIcno(R.drawable.luoyang01);
BP2.setTitle("2023年3月30日");
BP2.setContent("洛阳老君山!洛阳老君山!洛阳老君山!洛阳老君山!");
BasePerson BP3 = new BasePerson();
BP3.setIcno(R.drawable.kaifeng01);
BP3.setTitle("2023年3月30日");
BP3.setContent("开封清明上河园!开封清明上河园!开封清明上河园!");
BasePerson BP4 = new BasePerson();
BP4.setIcno(R.drawable.luoyang01);
BP4.setTitle("2023年3月30日");
BP4.setContent("洛阳老君山!洛阳老君山!洛阳老君山!洛阳老君山!");
BasePerson BP5 = new BasePerson();
BP5.setIcno(R.drawable.kaifeng01);
BP5.setTitle("2023年3月30日");
BP5.setContent("开封清明上河园!开封清明上河园!开封清明上河园!");
list.add(BP1);
list.add(BP2);
list.add(BP3);
list.add(BP4);
list.add(BP5);
BaseAdapterL adapter1=new BaseAdapterL(list,BaseMain.this,R.layout.listadapter);
lv.setAdapter(adapter1);
}
}
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:background="@drawable/p01">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/son_name"></ListView>
</LinearLayout>
<?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">
<ImageView
android:id="@+id/imageView"
android:layout_width="115dp"
android:layout_height="92dp"
android:layout_margin="10dp"
android:adjustViewBounds="true"
android:maxWidth="100dp"
android:maxHeight="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/kaifeng01" />
<TextView
android:id="@+id/textView"
android:layout_width="262dp"
android:layout_height="54dp"
android:layout_margin="10dp"
android:layout_marginStart="24dp"
android:text="TextView"
android:textSize="20dp"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/imageView"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.0" />
<TextView
android:id="@+id/textView2"
android:layout_width="126dp"
android:layout_height="19dp"
android:layout_marginStart="128dp"
android:text="TextView"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="1.0" />
</androidx.constraintlayout.widget.ConstraintLayout>