RecyclerView的点击事件
来源:互联网 发布:js getjson 获取数据 编辑:程序博客网 时间:2024/06/06 05:28
代码如下:
package com.qianqian.recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
//初始化变量
RecyclerView rv;
List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
rv= (RecyclerView) findViewById(R.id.rv);
initRV();
}
private void initRV() {
//创建数据源
initData();
LinearLayoutManager manager=new LinearLayoutManager(this);
rv.setLayoutManager(manager);
//设置适配器
Myadapter adapter=new Myadapter();
rv.setAdapter(adapter);条目
//适配器的条目点击监听
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//在Activity中我们实现了接口方法并在里面打印Toast提示:
Toast.makeText(MainActivity.this,"---"+position,Toast.LENGTH_SHORT).show();
}
});
}
//创建数据源
private void initData() {
list=new ArrayList<>();
for (int i = 0; i <100 ; i++) {
list.add("条目"+i);
}
}
//创建适配器
class Myadapter extends RecyclerView.Adapter<Myadapter.Viewholder>{
//listener是设定到Adapter上的,所以Adapter就需要对外开放相关方法:
OnItemClickListener listener;
//设置Item点击监听
public void setOnItemClickListener(OnItemClickListener listener){
this.listener=listener;
}
//Adapter的onCreateViewHolder是负责实例化每个Item的视图,
所以我在实例化视图时就将listener传递给ViewHolder。
@Override
public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
View v=View.inflate(MainActivity.this,R.layout.list_item,null);
Viewholder holder=new Viewholder(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//有可能listener传过来的对象是空的,则判断listener不为空,不为空就点击
if (listener!=null) {
listener.onItemClick(view,(int)view.getTag());
}
}
});
return holder;
}
@Override
public void onBindViewHolder(Viewholder holder, int position) {
holder.tv.setText(list.get(position));
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return list==null ? 0:list.size();
}
//优化
class Viewholder extends RecyclerView.ViewHolder{
TextView tv;
public Viewholder(View itemView) {
super(itemView);
tv=(TextView)itemView.findViewById(R.id.tv);
}
}
}
OnItemClickListener模仿ListView的OnItemClickListener,开放了view和position两个参数,这对习惯使用ListView
的开发者们使用起来更得心应手。从ViewHolder的代码中可以看到,执行onClick方法时会调用getPosition()将当前
Item的位置回调给listener。getPosition()是ViewHolder的内置方法,可直接使用。
public interface OnItemClickListener{
public void onItemClick(View view,int position);
}
}
package com.qianqian.recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
//初始化变量
RecyclerView rv;
List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
rv= (RecyclerView) findViewById(R.id.rv);
initRV();
}
private void initRV() {
//创建数据源
initData();
LinearLayoutManager manager=new LinearLayoutManager(this);
rv.setLayoutManager(manager);
//设置适配器
Myadapter adapter=new Myadapter();
rv.setAdapter(adapter);条目
//适配器的条目点击监听
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//在Activity中我们实现了接口方法并在里面打印Toast提示:
Toast.makeText(MainActivity.this,"---"+position,Toast.LENGTH_SHORT).show();
}
});
}
//创建数据源
private void initData() {
list=new ArrayList<>();
for (int i = 0; i <100 ; i++) {
list.add("条目"+i);
}
}
//创建适配器
class Myadapter extends RecyclerView.Adapter<Myadapter.Viewholder>{
//listener是设定到Adapter上的,所以Adapter就需要对外开放相关方法:
OnItemClickListener listener;
//设置Item点击监听
public void setOnItemClickListener(OnItemClickListener listener){
this.listener=listener;
}
//Adapter的onCreateViewHolder是负责实例化每个Item的视图,
所以我在实例化视图时就将listener传递给ViewHolder。
@Override
public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
View v=View.inflate(MainActivity.this,R.layout.list_item,null);
Viewholder holder=new Viewholder(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//有可能listener传过来的对象是空的,则判断listener不为空,不为空就点击
if (listener!=null) {
listener.onItemClick(view,(int)view.getTag());
}
}
});
return holder;
}
@Override
public void onBindViewHolder(Viewholder holder, int position) {
holder.tv.setText(list.get(position));
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return list==null ? 0:list.size();
}
//优化
class Viewholder extends RecyclerView.ViewHolder{
TextView tv;
public Viewholder(View itemView) {
super(itemView);
tv=(TextView)itemView.findViewById(R.id.tv);
}
}
}
OnItemClickListener模仿ListView的OnItemClickListener,开放了view和position两个参数,这对习惯使用ListView
的开发者们使用起来更得心应手。从ViewHolder的代码中可以看到,执行onClick方法时会调用getPosition()将当前
Item的位置回调给listener。getPosition()是ViewHolder的内置方法,可直接使用。
public interface OnItemClickListener{
public void onItemClick(View view,int position);
}
}
阅读全文
0 0
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView 的点击事件!
- RecyclerView的点击事件
- RecyclerView 的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- RecyclerView的点击事件
- Recyclerview的点击事件
- Karaf教程第4部分 OSGi中的CXF服务
- Raspberry Pi 3B开箱踩坑记录
- type=file按钮样式改造
- bzoj 4417: [Shoi2013]超级跳马
- 招聘、招聘,我就这样被算法选中
- RecyclerView的点击事件
- iconfont字体图标的使用方法--超简单! 我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以
- 重定向和用户会话
- PAT 乙级 1029.旧键盘(20)
- SCUT第四次训练赛(归并排序 sort 搜索 搜索2 并查集 高精度乘法 二分 Dating with girls(1) 均分纸牌 导弹拦截 A + B Problem II)
- 博士可能是所有学生群体里被黑最猛烈的
- 如何配置mybatis XML文件属性快捷提示方式
- 逆欧拉函数
- MVVM模式