RecycleView的使用以及一些注意点
来源:互联网 发布:近几年大学生就业数据 编辑:程序博客网 时间:2024/05/22 16:32
作为一个刚入行的新手决定从今天开始每天总结一点东西。
RecycleView
优点:内部集成了ViewHolder回收机制。
缺点:没有条目点击事件的功能,如果添加需要自己在adapter中自定义点击事件的接口;
今天就对recycleview的基本使用方法和点击事件的添加做点总结,
首先:基本使用方法:
private void initView() { mRecyclerview = (RecyclerView) findViewById(R.id.list); //第一步设置布局管理器; LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); mRecyclerview.setLayoutManager(linearLayoutManager); //第二步设置横向与竖向; linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); //第三步设置Adapter RecyclerAdapter adapter = new RecyclerAdapter(this, mList); mRecyclerview.setAdapter(adapter);}
关键点在于adapter内容;
package com.example.selfviewdemo;import android.content.Context;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 java.util.List;public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.SelfHolder> { public static final String TAG = RecyclerAdapter.class.getSimpleName(); private List<String> mData; private Context mContext; private final LayoutInflater mInflater; public RecyclerAdapter(Context context, List<String> data) { mData = data; mContext = context;
//第一步:得到打气筒; mInflater = LayoutInflater.from(context); } //创建 viewholder @Override public SelfHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//将布局加载到view中 View view = mInflater.inflate(R.layout.item, parent, false); return new SelfHolder(view); } //覆盖屏幕中的item @Override public void onBindViewHolder(final SelfHolder holder, int position) { holder.mTextView.setText(mData.get(position)); } @Override public int getItemCount() { return mData.size(); } class SelfHolder extends RecyclerView.ViewHolder { TextView mTextView; public SelfHolder(View itemView) { super(itemView); mTextView = (TextView) itemView.findViewById(R.id.item_text); } }}
最后点击事件的添加:
private void initView() { mRecyclerview = (RecyclerView) findViewById(R.id.list); //第一步设置布局管理器; LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); mRecyclerview.setLayoutManager(linearLayoutManager); //第二步设置横向与竖向; linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); //第三步设置Adapter RecyclerAdapter adapter = new RecyclerAdapter(this, mList); mRecyclerview.setAdapter(adapter); //第四步自定义点击事件(这里的点击事件是自己在adapter中自定义的) adapter.setOnItemClickLitener(new RecyclerAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { Log.d(TAG, "onItemClick: enter a"); Toast.makeText(getApplicationContext(), "被点击了" + position, Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClick(View view, int position) { } });}Adapter中要自定义点击事件,
@Override public void onBindViewHolder(final SelfHolder holder, int position) { holder.mTextView.setText(mData.get(position)); if (mOnItemClickLitener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "onClick: enter b"); int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemClick(holder.itemView, pos); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemLongClick(holder.itemView, pos); return false; } }); } } public interface OnItemClickLitener { void onItemClick(View view, int position); void onItemLongClick(View view, int position); } private OnItemClickLitener mOnItemClickLitener; public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) { Log.d(TAG, "setOnItemClickLitener: c"); this.mOnItemClickLitener = mOnItemClickLitener; }
0 0
- RecycleView的使用以及一些注意点
- DP的一些注意点以及题目
- 异常的学习以及一些注意点
- AngularJS的一些坑以及注意点
- phoenix的一些操作以及注意点
- AngularJS的一些坑以及注意点
- Recycleview相关注意点
- yum 的使用以及注意点
- jquery的使用注意点以及建议
- 内联函数的使用以及注意点
- 使用CTime的一些注意点
- EditText的一些使用注意点
- EditText的一些使用注意点
- TextView使用的一些注意点
- 使用memcache的一些注意点(一)
- 使用block的一些注意点
- CollapsingToolbarLayout使用的一些注意点
- 使用webpack时的一些注意点
- 1. Struts2框架之配置详解
- UVA 10047 The Monocycle(BFS)
- Spring复习(一)
- 机器学习实践系列之2 - GPUImage
- TCP和UDP的区别
- RecycleView的使用以及一些注意点
- 封装RecyclerView Adapter 实现可添加多个header和footer,可设置loadingView,低耦合的多种布局。
- 负数的二进制表示方法
- 【BZOJ】4625 [BeiJing2016]水晶
- glTexParameter
- python生成指定长度的英文数字组合
- Java.给Linux安装JDK和Eclipse
- 2017/2/6笔记
- linux下的信号量