Android Studio类微信界面之RecyclerView设计

一、RecyclerView基本概念

RecyclerView是Android 5.0推出的,是support-v7包中的新组件,它被用来代替ListView和GridView,并且能够实现瀑布流的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。
我们今天要做的是在原有的类微信界面上选择一个tab添加RecyclerView设计实现纵向布局浏览界面。
(类微信界面的设计可以参考上一篇文章: https://blog.csdn.net/qq_43915340/article/details/109084221.)
这只是完成最简单最基本的RecyclerView的功能,还有很多功能比如滑动删除、顶部悬浮、上拉加载、下拉刷新等,具体可以参靠官方的指南: https://developer.android.google.cn/guide/topics/ui/layout/recyclerview.html.

二、前端页面设计

item_dome.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="50dp"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_margin="8dp"
    android:background="@drawable/common_bg"
    android:orientation="vertical">

    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        tools:text="内容" />

</LinearLayout>

tab01.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"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/verticalview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:overScrollMode="never"
        android:scrollbars="none"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

三、后端代码

VerticalAdapter.java

RecyclerView的布局需要对应的一个适配器的java文件,我想实现的是纵向布局所以需要对应的一个纵向布局的java文件

package com.example.mywechat;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class VerticalAdappter extends RecyclerView.Adapter<VerticalAdappter.verticalviewholder> {
    private List<String>list;
    private Context context;

    public VerticalAdappter(Context context, List<String> list) {
        this.context=context;
        this.list=list;
    }

    @Override
    public verticalviewholder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(context).inflate(R.layout.item_dome,parent,false);
        return new verticalviewholder(view);
    }

    @Override
    public void onBindViewHolder(verticalviewholder holder, int position) {
        holder.tvContent.setText(list.get(position));
    }

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


    public class verticalviewholder extends RecyclerView.ViewHolder{
        TextView tvContent;

        public verticalviewholder(View itemView) {
            super(itemView);
            tvContent = itemView.findViewById(R.id.content);
        }
    }
}

weixinfragment.java

package com.example.mywechat;

import android.content.Context;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;

public class weixinFragment extends Fragment {
    private RecyclerView recyclerView;
    private List<String> mList = new ArrayList<>();
    private Context context;
    private VerticalAdappter adapter;
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
    private String mParam1;
    private String mParam2;

    public weixinFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment weixinFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static weixinFragment newInstance(String param1, String param2) {
        weixinFragment fragment = new weixinFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view=inflater.inflate(R.layout.tab01, container, false);
        recyclerView=view.findViewById(R.id.verticalview);
        initData();
        initView();

        return view;
    }

    private void initData() {
        mList.add("詹姆斯");
        mList.add("戴维斯");
        mList.add("格林");
        mList.add("波普");
        mList.add("霍华德");
        mList.add("库兹玛");
        mList.add("卡鲁索");
        mList.add("jr史密斯");
        mList.add("库克");
        mList.add("隆多");
        mList.add("莫里斯");
        mList.add("麦基");
        mList.add("杜德利");
        mList.add("阿德托昆博");
        mList.add("维特斯");
        mList.add("布拉德利");
    }
    private void initView() {

        context=this.getActivity();
        adapter=new VerticalAdappter(context,mList);


        LinearLayoutManager manager=new LinearLayoutManager(context);
        manager.setOrientation(LinearLayoutManager.VERTICAL);

        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(manager);
        recyclerView.setHasFixedSize(true);
    }
}

我这里只列出了在类微信界面设计好的基础上需要添加修改的代码,其他的没有变动和之前的类微信界面是一样的

四、运行界面展示



最后附上源码的代码仓库地址(码云)
链接: https://gitee.com/yuiaikn/android.git.

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值