Android高级组件的使用

一、实验目的

掌握ListView控件和Recyclerview的基本使用方式。

掌握使用ArrayAdapter、SimpleAdapter、BaseAdapter实现填充数据。

二、实验指导

1、写UI界面  xml文件  ListView

2、寻找ListView(初始化)

3、实现ListView的数据适配器adapter

4、给listView设置adapter

5、将模拟器运行结果截图到word文档中,并将核心代码复制到word文档中。

实验内容

实验题目  ListView或Recyclerview控件结合适配器的使用

实现如下效果:

任务要求:

使用ListView或Recyclerview控件结合适配器的使用实现类似学习强国界面效果。其中自定义的item界面效果及素材等资源可自己发挥。

四、模拟器效果截图

五、源代码

  1. MyRecyAdapter
package cs.qqq.qqq.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

import cs.qqq.qqq.R;
import cs.qqq.qqq.beans.PInfo;

public class MyRecyAdapter extends  RecyclerView.Adapter<MyRecyAdapter.ViewHolder>{

    private List<PInfo> pInfoList;
    private Context context;
    private int layoutid;

    public MyRecyAdapter(List<PInfo> pInfoList, Context context, int layoutid) {
        this.pInfoList = pInfoList;
        this.context = context;
        this.layoutid = layoutid;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
        //加载条目布局文件,返回holder对象
        View view=View.inflate(context,layoutid,null);
        ViewHolder holder=new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {

        //将数据设置给holder对应的控件上
        viewHolder.imageView.setImageResource(pInfoList.get(i).getPicon());
        viewHolder.textView.setText(pInfoList.get(i).getPdesc());
        viewHolder.textView1.setText(pInfoList.get(i).getContent());
        viewHolder.textView2.setText(pInfoList.get(i).getReal_time());

    }

    @Override
    public int getItemCount() {
        return pInfoList.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        private ImageView imageView;
        private TextView textView;
        private TextView textView1;
        private TextView textView2;
        public ViewHolder(@NonNull View itemView){
            super(itemView);
            imageView=itemView.findViewById(R.id.imageView);
            textView=itemView.findViewById(R.id.textView);
            textView1=itemView.findViewById(R.id.textView1);
            textView2=itemView.findViewById(R.id.textView2);
        }
    }
}

 2.PInfo

package cs.qqq.qqq.beans;

import java.util.Date;

public class PInfo {
    private int picon;
    private String pdesc;
    private  String content;
    private String real_time;

    public String getReal_time() {
        return real_time;
    }

    public void setReal_time(String real_time) {
        this.real_time = real_time;
    }



    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public int getPicon() {
        return picon;
    }

    public void setPicon(int picon) {
        this.picon = picon;
    }

    public String getPdesc() {
        return pdesc;
    }

    public void setPdesc(String pdesc) {
        this.pdesc = pdesc;
    }
}

3.MRecyclerActivity

package cs.qqq.qqq;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.format.DateFormat;
import android.widget.TextView;

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

import cs.qqq.qqq.adapter.MyRecyAdapter;
import cs.qqq.qqq.beans.PInfo;

public class MRecyclerActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private List<PInfo> pInfoList=new ArrayList<>();


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

        recyclerView=findViewById(R.id.recycler);


        initData();
        //设置一下布局方式
//        垂直线性布局
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        //添加分割线
        recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        //设置适配器
        MyRecyAdapter recyAdapter=new MyRecyAdapter(pInfoList,this,R.layout.list_item);
        recyclerView.setAdapter(recyAdapter);

    }


    private void initData() {
        for(int i=0;i<1;i++){
            PInfo p1=new PInfo();
            p1.setPicon(R.drawable.meigui);
            p1.setPdesc("***");
            p1.setContent("***");
            p1.setReal_time("2023-3-30 星期四");
            pInfoList.add(p1);
            PInfo p2=new PInfo();
            p2.setPicon(R.drawable.baihe);
            p2.setPdesc("百合");
            p2.setContent("百合是百合科百合属植物。地下根茎为鳞状块茎,广展,无明显结节,白色;茎有紫色条纹,无毛");
            p2.setReal_time("2023-3-30 星期四");
            pInfoList.add(p2);
            PInfo p3=new PInfo();
            p3.setPicon(R.drawable.lanmeigui);
            p3.setPdesc("蓝玫瑰");
            p3.setContent("蓝玫瑰不是自然生长的,因此必须经过特别染色,以呈现其独有的蓝色");
            p3.setReal_time("2023-3-30 星期四");
            pInfoList.add(p3);
        }
    }


}

4.activity_mrecycler.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"
    tools:context=".MRecyclerActivity">
    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:id="@+id/recycler"/>

</androidx.constraintlayout.widget.ConstraintLayout>

5.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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="130dp"
        android:layout_height="140dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="13dp"
        android:scaleType="fitXY"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/meigui" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="44dp"
        android:layout_marginLeft="44dp"
        android:text="玫瑰"
        android:textSize="25sp"
        app:layout_constraintStart_toEndOf="@+id/imageView"
        app:layout_constraintTop_toTopOf="@+id/imageView" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="226dp"
        android:layout_height="0dp"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="15dp"
        android:text="text1111111111111111111111111111111111111111111111111111"
        android:textSize="15sp"
        app:layout_constraintStart_toEndOf="@+id/imageView"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        tools:ignore="MissingConstraints" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="145dp"
        android:layout_height="21dp"
        android:layout_marginTop="10dp"
        android:text="2023-3-30"
        app:layout_constraintStart_toStartOf="@+id/textView1"
        app:layout_constraintTop_toBottomOf="@+id/textView1"
        tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

moon-Joe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值