自定义RecyclerView之多条目加载
来源:互联网 发布:中文编程系统 编辑:程序博客网 时间:2024/05/17 12:03
主类 Activity:
package chenchneg20171009.bwie.com.lianxi10day13_1;import android.os.Bundle;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;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>(); MyAdapter myAdapter; /** * 网格 */ private Button mBt; private SwipeRefreshLayout mSrl; /** * 网格 */ @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); mSrl = (SwipeRefreshLayout) findViewById(R.id.srl); mSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Toast.makeText(MainActivity.this,"OnRefreshListener", Toast.LENGTH_SHORT).show(); //网络请求数据,然后更新列表 new Handler().postDelayed(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"数据请求成功", Toast.LENGTH_SHORT).show(); List<ItemBrean> l=new ArrayList<ItemBrean>(); for (int i=0;i<10;i++){ ItemBrean itemBrean = new ItemBrean("名字" + i, "年龄" + i); l.add(itemBrean); } myAdapter.refresh(l); //关闭刷新 mSrl.setRefreshing(false); } },3000); } }); } @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 = 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(); } }); } public void refresh(){ }}适配器 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;private static int TYPE1=0; private static int TYPE2=1; //接口回调 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) { RecyclerView.ViewHolder viewHolder=null; if(viewType==TYPE1){ View view= LayoutInflater.from(context).inflate(R.layout.item1,parent,false); viewHolder = new Type1ViewHolder(view); }else{ View view= LayoutInflater.from(context).inflate(R.layout.item2,parent,false); viewHolder = new Type2ViewHolder(view); } return viewHolder; } //多条目加载判断方法 @Override public int getItemViewType(int position) { return position%2==0?TYPE1:TYPE2; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { if (holder instanceof Type1ViewHolder) { 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; } }); }else{ Type2ViewHolder type2 = (Type2ViewHolder) holder; } } @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); } } //展示页面数据 public void refresh(List<ItemBrean> l) { list.clear(); list.addAll(l); notifyDataSetChanged(); } private class Type2ViewHolder extends RecyclerView.ViewHolder{ public Type2ViewHolder(View itemView) { super(itemView); } }}新添加 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="45dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/></LinearLayout>
阅读全文
0 0
- 自定义RecyclerView之多条目加载
- RecyclerView自定义条目加载
- XListView之多条目加载
- RecyclerView多条目加载
- RecyclerView多条目加载
- RecyclerView 多条目加载
- RecyclerView多条目加载
- recyclerview多条目加载
- Recyclerview多条目加载
- Recyclerview多条目加载
- RecyclerView . item多条目加载
- RecyclerView 多条目加载demo
- RecyclerView+OKhttp+item的条目加载
- RecyclerView的多条目加载适配器
- Recyclerview布局多条目加载+上下拉
- RecyclerView 条目点击事件 XRecyclerView刷新加载
- RecyclerView实现分割线、点击事件、条目加载动画
- RecyclerView 条目加载图片混乱处理方式之一
- java_this/super构造器
- 达人篇:3.4)APQP流程;
- 属性动画
- 求两个数的最大公约数和最小公倍数
- logback.xml配置详解
- 自定义RecyclerView之多条目加载
- POJ 2251 Dungeon Master <三维BFS水题>
- 2017.10.13 半年记
- 二叉堆与优先队列
- mysql通过拷贝data目录恢复数据
- Ubuntu查看应用
- bzoj2208 [Jsoi2010]连通数 dfs
- Banner的使用
- 大小写字母转换