自定义RecyclerView之点击事件
来源:互联网 发布:java爬虫框架 编辑:程序博客网 时间:2024/06/05 03:21
主方法 Activity
package chenchneg20171009.bwie.com.lianxi10day13_1;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.DividerItemDecoration;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Button;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener { RecyclerView rv; List<ItemBrean> list = new ArrayList<ItemBrean>(); /** * 网格 */ private Button mBt; /** * 网格 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //初始化数据 rv= (RecyclerView) findViewById(R.id.rv); show(true); } private void initView() { mBt = (Button) findViewById(R.id.bt); mBt.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt: String str = mBt.getText().toString().trim(); if ("网格".equals(str)){ show(false); mBt.setText("垂直"); }else{ show(true); mBt.setText("网格"); } break; } } private void show(boolean flag){ //设置布局管理器 //垂直列表 // rv.setLayoutManager(new LinearLayoutManager(this)); //网格模式 // rv.setLayoutManager(new GridLayoutManager(this, 2)); //添加垂直分割线 rv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); //水平分割线 RecyclerView.LayoutManager layoutManager=null; if (flag){ layoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); }else{ layoutManager=new GridLayoutManager(this,2); } rv.setLayoutManager(layoutManager); rv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL)); //横向列表false是从左往右,ture是从右往左 // rv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)); for (int i = 0; i < 100; i++) { ItemBrean itemBrean = new ItemBrean("name" + i, "age" + i); list.add(itemBrean); } //创建适配器 MyAdapter myAdapter = new MyAdapter(this, list); rv.setAdapter(myAdapter); myAdapter.setonItemClick(new MyAdapter.OnItemListener() { @Override public void onItemClick(int psotion) { Toast.makeText(MainActivity.this,"点击"+psotion,Toast.LENGTH_SHORT).show(); } @Override public void onItemlongClick(int postion) { Toast.makeText(MainActivity.this,"长点击"+postion,Toast.LENGTH_SHORT).show(); } }); }}适配器 Adapter:
package chenchneg20171009.bwie.com.lianxi10day13_1;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.TextView;import java.util.List;/** * Created by dell on 2017/10/13. */public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<ItemBrean> list; private OnItemListener onItemListener; //接口回调 public interface OnItemListener{ public void onItemClick(int psotion); public void onItemlongClick(int postion); } public void setonItemClick(OnItemListener onItemListener){ this.onItemListener=onItemListener; } public MyAdapter(Context context, List<ItemBrean> list){ this.context=context; this.list=list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.item1,parent,false); Type1ViewHolder type1ViewHolder = new Type1ViewHolder(view); return type1ViewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { ItemBrean itemBrean = list.get(position); //强转 Type1ViewHolder type= (Type1ViewHolder) holder; type.tvname.setText(itemBrean.getName()); type.tvage.setText(itemBrean.getAge()); //条目监听 type.ll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (onItemListener!=null){ onItemListener.onItemClick(position); } } }); type.ll.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { if (onItemListener!=null){ onItemListener.onItemlongClick(position); } return true; } }); } @Override public int getItemCount() { return list.size(); } private class Type1ViewHolder extends RecyclerView.ViewHolder{ TextView tvname; TextView tvage; LinearLayout ll; public Type1ViewHolder(View itemView) { super(itemView); tvname = itemView.findViewById(R.id.tv_name); tvage = itemView.findViewById(R.id.tv_age); ll = itemView.findViewById(R.id.ll); } }}
阅读全文
0 0
- 自定义RecyclerView之点击事件
- recyclerView自定义点击事件
- RecyclerView自定义点击事件
- Recyclerview自定义点击事件
- recyclerView自定义点击事件
- Recyclerview的自定义点击事件
- 自定义RecyclerView的item的点击事件
- android_自定义recyclerView的点击事件
- RecyclerView的使用 以及RecyclerView的自定义点击事件
- recyclerview之item点击事件监听
- Android RecyclerView自定义点击事件和长按事件
- RecyclerView自定义点击事件和长按事件
- Android实现RecyclerView自定义列表、点击事件以及下拉刷新
- 解决 RecyclerView条目点击事件,分享自定义adapter
- Android实现RecyclerView自定义列表、点击事件以及下拉刷新
- RecyclerView 点击事件
- RecyclerView点击事件
- RecyclerView的点击事件
- 个人总结操作符的特性,包括:按位操作符、位移操作符和单目操作符中的sizeof
- POJ-3278 Catch That Cow【广度优先搜索】
- 【机器学习算法】从决策树到GBDT(一)
- Linux 安装VMware-Tools
- 访问矩阵中的数据的两种方法
- 自定义RecyclerView之点击事件
- 树状数组模版
- sublime text 3
- volatile和transient
- angularjs解析数据展示在表格两种方法
- android+bananer
- Ubuntu下制作windows U盘启动盘
- 关于运行java程序提示:无法加载主类的问题
- POJ-1328 Radar Installation【贪心法】