Android studio 列表渲染

原理:就是创建一个显示页,还有一个模板页,还有一个类,该类就是起到渲染的动作

1.新建一个布局文件,命名为修改为dingyue_layout,根布局元素为FrameLayout:Android studio 列表渲染_第1张图片
2.完成布局文件:dingyue_layout.xml的设计, android:id="@+id/rv_dingyue"
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
这块就是你的列表部分,此页面也是主页面,其他内容也是在这里添加
Android studio 列表渲染_第2张图片
代码如下:

    
3.在res/layout/下面添加一个列表项的布局文件dingyue_item.xml,此页面作为模板页面,就是你的列表内容的其中一个作为模板。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020041913222554.png)

4.这是我的模板内容
Android studio 列表渲染_第3张图片
Android studio 列表渲染_第4张图片
运行效果:
在这里插入图片描述
4.需要做一个适配器类来渲染,新建一个Activity类:DingYueActivity,不选中生成布局文件选项,这部分很重要(里面放了个数组用来存放你渲染的数据的)
Android studio 列表渲染_第5张图片

代码如下:

package com.example.myapp5;

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

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class DingYueActivity extends AppCompatActivity {
private String[] dyTitles;
private String[] dyDescripts;
private int[] dyIcons;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.dingyue_fragment);
    initDYData();
    //从布局文件中获取名叫tv_dingyue的循环视图
    RecyclerView rcView=findViewById(R.id.rv_dingyue);
    //创建一个垂直方向的线性布局管理器
    LinearLayoutManager manager=new LinearLayoutManager(this);
    manager.setOrientation(LinearLayoutManager.VERTICAL);
    //设置布局视图的布局管理器
    rcView.setLayoutManager(manager);
    //设置列表的线性适配器
    rcView.setAdapter(new MyRCVAdapter());
}
private void initDYData() {
    dyTitles = new String[]{"我的图书馆", "所有应用", "热门报刊", "头条", "教育", "科技",
            "财经", "文史", "人文", "体育", "娱乐", "军事", "外文资讯", "自定义"};
    dyDescripts=new String[]{"图书馆自有RSS源","所有应用列表","热门报刊",
            "最新最全要闻频道,网罗国际国内新闻","集纳各类考试专题、教育资讯",
            "提供重要数码资讯、IT信息","提供全天候国内和世界财经新闻",
            "文史资料、文化热点","提供文化新闻、读书信息的新闻频道",
            "网罗国际国内各种体育资讯,展现体坛风云","实时传递娱乐八卦、影视动态",
            "第一时间发布便于军事动态","提供最新外文信息","添加自定义的RSS源"};
    dyIcons=new int[]{R.mipmap.ic_rss_gdslzs,R.mipmap.ic_rss_all_app,
            R.mipmap.ic_rss_newspapers,R.mipmap.ic_rss_front_page,R.mipmap.ic_rss_education,
            R.mipmap.ic_rss_technology,R.mipmap.ic_rss_finance,
            R.mipmap.ic_rss_literature_and_history,R.mipmap.ic_rss_culture,
            R.mipmap.ic_rss_sports,R.mipmap.ic_rss_pastime,R.mipmap.ic_rss_military,
            R.mipmap.ic_rss_information,R.mipmap.ic_rss_customize};
}
//适配器
public class MyRCVAdapter extends RecyclerView.Adapter{


    @NonNull
    //创建列表项的视图持有者
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        MyViewHolder holder= new MyViewHolder(
                LayoutInflater.from(parent.getContext()).inflate(R.layout.dingyue_item,parent,false));



        return holder;
    }
    //绑定列表项的视图持有者
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        ((MyViewHolder)holder).iv_icon.setImageResource(dyIcons[position]);
        ((MyViewHolder)holder).tv_title.setText(dyTitles[position]);
        ((MyViewHolder)holder).tv_descript.setText(dyDescripts[position]);

    }
    //获取列表项的个数
    public int getItemCount() {return  dyTitles.length;}

    class MyViewHolder extends RecyclerView.ViewHolder{
        TextView tv_title;
        TextView tv_descript;
        ImageView iv_icon;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_title=itemView.findViewById(R.id.tv_dyTitle);
            tv_descript=itemView.findViewById(R.id.tv_dyDiscript);
            iv_icon=itemView.findViewById(R.id.iv_dyIcon);
        }

    }
}

}

最后要注意的是要把这个DingYueActivity类作为启动项修改代码如下:
Android studio 列表渲染_第6张图片

最后运行结果:
Android studio 列表渲染_第7张图片

你可能感兴趣的:(Android studio 列表渲染)