热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android开发RecyclerView的使用

RecyclerView简单布局的使用代码部分RcvClickActivity.javapackagecom.haocent.android.recyclerview.cli
RecyclerView简单布局的使用

代码部分


RcvClickActivity.java

package com.haocent.android.recyclerview.click;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;import com.haocent.android.recyclerview.R;import java.util.ArrayList;
import java.util.List;/*** Item 点击对应的 Activity** Created by Tnno Wu on 2018/03/05.*/public class RcvClickActivity extends AppCompatActivity implements RcvClickAdapter.OnItemClickListener {private static final String TAG &#61; RcvClickActivity.class.getSimpleName();private List<String> mList &#61; new ArrayList<>();&#64;Overrideprotected void onCreate(&#64;Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.rcv_click_activity);initData();initView();}private void initData() {mList.add("亚特兰大老鹰");mList.add("夏洛特黄蜂");mList.add("迈阿密热火");mList.add("奥兰多魔术");mList.add("华盛顿奇才");mList.add("波士顿凯尔特人");mList.add("布鲁克林篮网");mList.add("纽约尼克斯");mList.add("费城76人");mList.add("多伦多猛龙");mList.add("芝加哥公牛");mList.add("克里夫兰骑士");mList.add("底特律活塞");mList.add("印第安纳步行者");mList.add("密尔沃基雄鹿");mList.add("达拉斯独行侠");mList.add("休斯顿火箭");mList.add("孟菲斯灰熊");mList.add("新奥尔良鹈鹕");mList.add("圣安东尼奥马刺");mList.add("丹佛掘金");mList.add("明尼苏达森林狼");mList.add("俄克拉荷马城雷霆");mList.add("波特兰开拓者");mList.add("犹他爵士");mList.add("金州勇士");mList.add("洛杉矶快船");mList.add("洛杉矶湖人");mList.add("菲尼克斯太阳");mList.add("萨克拉门托国王");}private void initView() {RcvClickAdapter adapter &#61; new RcvClickAdapter(this, this);RecyclerView rcvClick &#61; findViewById(R.id.rcv_click);rcvClick.setLayoutManager(new LinearLayoutManager(this));rcvClick.setHasFixedSize(true);rcvClick.setAdapter(adapter);adapter.setRcvClickDataList(mList);}&#64;Overridepublic void onItemClick(String content) {Toast.makeText(this, "你点击的是&#xff1a;" &#43; content, Toast.LENGTH_SHORT).show();}
}

RcvClickAdapter.java

package com.haocent.android.recyclerview.click;import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;import com.haocent.android.recyclerview.R;import java.util.ArrayList;
import java.util.List;/*** Item 点击对应的 Adapter** Created by Tnno Wu on 2018/03/05.*/public class RcvClickAdapter extends RecyclerView.Adapter<RcvClickAdapter.RcvClickViewHolder> {private static final String TAG &#61; RcvClickAdapter.class.getSimpleName();private Context mContext;private List<String> mList &#61; new ArrayList<>();private OnItemClickListener mListener;public RcvClickAdapter(Context context, OnItemClickListener listener) {mContext &#61; context;mListener &#61; listener;}public void setRcvClickDataList(List<String> list) {Log.d(TAG, "setRcvClickDataList: " &#43; list.size());mList &#61; list;notifyDataSetChanged();}&#64;NonNull&#64;Overridepublic RcvClickViewHolder onCreateViewHolder(&#64;NonNull ViewGroup parent, int viewType) {View view &#61; LayoutInflater.from(mContext).inflate(R.layout.rcv_click_recycle_item, parent, false);return new RcvClickViewHolder(view);}&#64;Overridepublic void onBindViewHolder(&#64;NonNull RcvClickViewHolder holder, int position) {final String content &#61; mList.get(position);holder.tvNum.setText(position &#43; 1 &#43; "");holder.tvContent.setText(content);// 第一种写法&#xff1a;直接在 Adapter 里写
// holder.itemView.setOnClickListener(new View.OnClickListener() {
// &#64;Override
// public void onClick(View v) {
// Toast.makeText(mContext, "你点击的是&#xff1a;" &#43; content, Toast.LENGTH_SHORT).show();
// }
// });// 第二种写法&#xff1a;将点击事件传到 Activity 里去写holder.itemView.setOnClickListener(new View.OnClickListener() {&#64;Overridepublic void onClick(View v) {mListener.onItemClick(content);}});}&#64;Overridepublic int getItemCount() {return mList &#61;&#61; null ? 0 : mList.size();}public class RcvClickViewHolder extends RecyclerView.ViewHolder {TextView tvNum, tvContent;public RcvClickViewHolder(View itemView) {super(itemView);tvNum &#61; itemView.findViewById(R.id.tv_num);tvContent &#61; itemView.findViewById(R.id.tv_content);}}public interface OnItemClickListener {void onItemClick(String content);}
}

代码部分总结

RecyclerView点击事件的两种写法&#xff1a;
①在Adapter里面直接对控件做点击事件

&#64;Override
public void onBindViewHolder(&#64;NonNull XxxViewHolder holder, int position) {holder.控件名.setOnClickListener(new View.OnClickListener() {&#64;Overridepublic void onClick(View v) {// TODO:}});
}

②写接口&#xff0c;在Activity或Fragment上实现接口中定义的方法

public interface OnItemClickListener {void onItemClick(参数类型 参数名 , ...);
}private OnItemClickListener mListener;public XxxAdapter(Context context, OnItemClickListener listener) {mContext &#61; context;mListener &#61; listener;
}&#64;Override
public void onBindViewHolder(&#64;NonNull XxxViewHolder holder, int position) {holder.控件名.setOnClickListener(new View.OnClickListener() {&#64;Overridepublic void onClick(View v) {mListener.onItemClick(content);}});
}在 Activity 或 Fragment 上实现接口中定义的方法public class XxxActivity extends AppCompatActivity implements XxxAdapter.OnItemClickListenerXxxAdapter adapter &#61; new XxxAdapter(context, this);&#64;Override
public void onItemClick(String content) {// TODO:
}

样式部分


① 在activity_main.xml内添加recyclerView&#xff0c;并将id设置为recyclerView
②新建rcv_click_recycle_item.xml文件&#xff0c;添加两个TextView组件&#xff0c;并将id分别设置为tv_num和tv_content


本人运行效果

左侧列出了list中的数据&#xff0c;可上下滑动
右侧为点击效果&#xff0c;点击后有弹窗出现
在这里插入图片描述

运行示例图

在这里插入图片描述

纯RecyclerView上下滑动代码链接


结合微信页面的RecyclerView上下滑动代码链接


点击查看文章参考来源


推荐阅读
author-avatar
liuyidii
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有