自定义RecyclerView之上拉刷新更新数据
来源:互联网 发布:豆瓣python 编辑:程序博客网 时间:2024/05/20 14:28
主类 Acitivity:
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; //接口回调 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); } } //展示页面数据 public void refresh(List<ItemBrean> l) { list.clear(); list.addAll(l); notifyDataSetChanged(); }}
阅读全文
0 0
- 自定义RecyclerView之上拉刷新更新数据
- RecyclerView之上拉加载
- UITableView之上拉刷新
- 自定义控件之上拉刷新下拉加载RefreshListView
- 给RecyclerView自定义上拉,下拉刷新
- Android RecyclerView(八)设置自定义 下拉刷新 与 上拉加载数据
- RecyclerView上下拉刷新
- YRecyclerView自定义下拉刷新上拉加载更多的RecyclerView
- 自定义RecyclerView实现下拉刷新和上拉加载
- 自定义下拉刷新上拉加载控件(SwipeRefreshLayout + recyclerView)
- 自定义RecyclerView上拉加载更多和刷新
- 自定义RecyclerView添加下拉刷新和上拉加载功能
- 完全自定义RecyclerView下拉刷新上拉加载
- RecyclerView的下拉刷新数据 与上拉加载更多
- android自定义下拉刷新上拉更新的ListView
- ios:UITableView告别手动上拉更新,自动刷新数据
- (再次更新)打造RecyclerView万能适配器,上拉刷新,下拉加载
- RecyclerView列表数据刷新
- Zookeeper之Eclipse插件安装-yellowcong
- node中的module.exports、exports VS es6中的import、export
- JavaScript案例——网页特效之旋转
- ST17H26调试板操作注意事项
- CentOS 编译安装 zabbix 3
- 自定义RecyclerView之上拉刷新更新数据
- DoTween
- 如何生成 RDF 数据?
- oracle RAC如何正确地删除ASM磁盘组
- 偶串
- 动画
- HDOJ 1013 Digital Roots
- 双非渣硕的算法求职路
- win 服务器迁移 ubuntu