RecyclerView
来源:互联网 发布:炉石大数据各数据意义 编辑:程序博客网 时间:2024/06/08 04:54
//bean包
public class ItemBean { private String name; private String age; public ItemBean(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "ItemBean{" + "name='" + name + '\'' + ", age='" + age + '\'' + '}'; }}//adapterpublic class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private Context context; private List<ItemBean> list; private OnItemListener onItemListener; private static int TYPE1 = 0; private static int TYPE2 = 1; public interface OnItemListener{ public void onItemClick(ItemBean itemBean, int position); public void onItemLongClick(ItemBean itemBean, int position); } public void setOnItemListener(OnItemListener onItemListener) { this.onItemListener = onItemListener; } public MyAdapter(Context context, List<ItemBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //加载写好的item布局 RecyclerView.ViewHolder viewHolder = null; /* if (viewType == TYPE1) { View view1 = LayoutInflater.from(context).inflate(R.layout.item1, parent, false); viewHolder = new Type1Viewholder(view1); } else { View view2 = LayoutInflater.from(context).inflate(R.layout.item2, parent, false); viewHolder = new Type2Viewholder(view2); }*/ View view1 = LayoutInflater.from(context).inflate(R.layout.item1, parent, false); viewHolder = new Type1Viewholder(view1); return viewHolder; } @Override public int getItemViewType(int position) { return position % 2 == 0 ? TYPE1 : TYPE2; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { //给item布局里的组件设置值 if (holder instanceof Type1Viewholder) { final ItemBean itemBean = list.get(position); Type1Viewholder type1Viewholder = (Type1Viewholder) holder; type1Viewholder.tvName.setText(itemBean.getName()); type1Viewholder.tvAge.setText(itemBean.getAge()); type1Viewholder.ll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (onItemListener != null) { onItemListener.onItemClick(itemBean, position); } } }); type1Viewholder.ll.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { if (onItemListener != null) { onItemListener.onItemLongClick(itemBean, position); } return true; } }); } else { Type2Viewholder type2Viewholder = (Type2Viewholder) holder; } } @Override public int getItemCount() { return list.size(); } private class Type1Viewholder extends RecyclerView.ViewHolder { //类似listview的adapter的viewholder private TextView tvName; private TextView tvAge; private 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); } } private class Type2Viewholder extends RecyclerView.ViewHolder { public Type2Viewholder(View itemView) { super(itemView); } } public void refresh(List<ItemBean> l) { list.clear(); list.addAll(l); notifyDataSetChanged(); } public void addItem(ItemBean itemBean) { list.add(itemBean); notifyItemInserted(1); }}//main方法package com.bwei.recylerviewdemo;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.DefaultItemAnimator;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 { private List<ItemBean> list = new ArrayList<>(); private Button mBt; private RecyclerView rv; private SwipeRefreshLayout mSrl; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //初始化组件 rv= (RecyclerView) findViewById(R.id.rv); show(false); } 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,"onRefresh开始",Toast.LENGTH_SHORT).show(); //网络请求数据,然后更新列表 new Handler().postDelayed(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "数据请求完成,并且更新了列表", Toast.LENGTH_SHORT).show(); List<ItemBean> l = new ArrayList<ItemBean>(); for (int i = 0; i < 10; i++) { ItemBean itemBean = new ItemBean("名字" + i, "年龄" + i); l.add(itemBean); } adapter.refresh(l); mSrl.setRefreshing(false); } }, 3000); } }); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.bt: String str = mBt.getText().toString().trim(); mBt.setText("垂直"); if ("网格".equals(str)) { show(false); mBt.setText("垂直"); } else { show(true); mBt.setText("网格"); } //给该列表,填加一个新的条目 adapter.addItem(new ItemBean("新的", "心底")); break; } } private void refresh() { } private void show(boolean flag) { //设置布局管理器 rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));// rv.setLayoutManager(new GridLayoutManager(this, 2)); //添加分割线 RecyclerView.LayoutManager layoutManager = null; if (flag) { layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); } else { layoutManager = new GridLayoutManager(this, 2); }// rv.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)); rv.setLayoutManager(layoutManager); //设置分割线 rv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); //设置动画 rv.setItemAnimator(new DefaultItemAnimator()); //设置适配器 for (int i = 0; i < 100; i++) { ItemBean itemBean = new ItemBean("name" + i, "age" + i); list.add(itemBean); } adapter = new MyAdapter(this, list); rv.setAdapter(adapter); adapter.setOnItemListener(new MyAdapter.OnItemListener() { @Override public void onItemClick(ItemBean itemBean, int position) { Toast.makeText(MainActivity.this, "点击:" + position + " " + itemBean.toString(), Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClick(ItemBean itemBean, int position) { Toast.makeText(MainActivity.this, "长按:" + position + " " + itemBean.toString(), Toast.LENGTH_SHORT).show(); } }); }}//布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bwei.recylerviewdemo.MainActivity"> <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="网格"/> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/srl" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </android.support.v4.widget.SwipeRefreshLayout></LinearLayout>
//item<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="45dp" android:background="#330000ff" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" /> <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" /></LinearLayout>
阅读全文
0 0
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- Sort Colors
- 布局侧边栏
- 博弈问题外挂-SG函数
- Class的 getSuperclass与getGenericSuperclass区别和如何获取泛型参数类型
- BZOJ
- RecyclerView
- Android---Bannerd的基本使用
- 使可变性最小化。
- git撤销操作(git checkout; git reset)
- maven导入jar包报错解决办法之一
- Hashmap的容量为什么是2的幂次
- matlabday01
- Android RecyclerView 获取数据实现添加,删除功能
- 链栈实现