android RecycleView的使用
来源:互联网 发布:数据库实时备份 编辑:程序博客网 时间:2024/05/18 07:08
1、说明
这个空间可以说是升级版的ListView,支持不同的排列,还支持动画。
2、关于这个控件需要掌握的一下几点
1:实现自定义布局;
2:实现增加和删除;
3:实现控件的点击;
4:实现动画效果。
5:实现不同的展示效果横排的ListView效果,GridView效果。
3、直接上代码
1、Item布局
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="80dp" android:layout_margin="5dp" android:background="@color/colorAccent" android:layout_gravity="center"> <TextView android:id="@+id/id_tv" android:layout_width="72dp" android:layout_height="72dp" android:layout_gravity="center" android:gravity="center" android:textSize="50sp" android:textColor="#000" android:text="good"/></FrameLayout>
2、继承RecycleView.Adapter:
interface OnItemListener通过这个借口实现控件点击的监听
** * 微信:yafeihou * Created by 侯亚飞 on 2016/6/5. */public class MySimpleAdapter extends RecyclerView.Adapter<MyViewHolder> { private LayoutInflater inflater ; private Context context ; private List<String> datas ;/***用于设置监听的接口*/ public interface OnItemListener{ void onClickListerner(View view, int pos); void onLongClickListerner(View view, int pos); }//定义一个接口 private OnItemListener onItemListener ;//供外部使用的接口类 public void setOnItemListener(OnItemListener onItemListener){ this.onItemListener = onItemListener; } public MySimpleAdapter(Context context, ArrayList<String> datas) { this.context = context ; this.datas = datas; inflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //创建item 布局!!!!!!!!!!!!!!!! View view = inflater.inflate(R.layout.item_layout,parent,false); // MyViewHolder holder = new MyViewHolder(view); return holder ; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //给每个控件设置值 holder.textView.setText(datas.get(position)); //在这里实现控件的 if (onItemListener!=null){ holder.textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getLayoutPosition(); onItemListener.onClickListerner(holder.textView,position); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int position = holder.getLayoutPosition(); ///!!!!!!!!!!!!!!!!!!!!!!!用这个获取所点击的item的位置//调用接口中的方法 onItemListener.onLongClickListerner(holder.textView,position); return false ; } }); } } @Override public int getItemCount() { return datas.size(); } /** * 添加一条记录 */ public void addData(int position){ datas.add(position,"&"); //用这一句表示添加一条记录 notifyItemInserted(position); } /** * 删除一条记录 */ public void deleteData(int position){ datas.remove(position); //用这一句表示删除一条数据记录 notifyItemRemoved(position); }}//自定义的内部类,用于获取所有的控件class MyViewHolder extends RecyclerView.ViewHolder{ TextView textView ; public MyViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.id_tv); }}
4、Activity代码
public class MainActivity extends AppCompatActivity { private RecyclerView myRecycleView ; private ArrayList<String> dataLists = new ArrayList<>(); private MySimpleAdapter adapter ; //普通适配器 //private StaggerAdapter staggerAdapter ; //瀑布流适配器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); //初始化控件 initView(); //初始化数据 iniDatas(); //设置Adapter adapter = new MySimpleAdapter(getApplicationContext(),dataLists); myRecycleView.setAdapter(adapter); //设置布局样式 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL ,false); myRecycleView.setLayoutManager(linearLayoutManager); //设置动画 myRecycleView.setItemAnimator(new DefaultItemAnimator()); //设置监听 adapter.setOnItemListener(new MySimpleAdapter.OnItemListener() { @Override public void onClickListerner(View view, int pos) { Toast.makeText(getApplicationContext(),dataLists.get(pos),Toast.LENGTH_SHORT).show(); } @Override public void onLongClickListerner(View view, int pos) { Toast.makeText(getApplicationContext(),dataLists.get(pos)+"good",Toast.LENGTH_SHORT).show(); new AlertDialog.Builder(MainActivity.this).setTitle("newB").setMessage(dataLists.get(pos)+"good").create().show(); } }); } private void iniDatas() { for (int i='A';i<='z';i++){ dataLists.add(""+(char)i); } } private void initView() { myRecycleView = (RecyclerView) findViewById(R.id.id_recycleView); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_horizontal) { //设置布局样式 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false); myRecycleView.setLayoutManager(linearLayoutManager); return true; } if (id == R.id.action_vertical) { //设置布局样式 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); myRecycleView.setLayoutManager(linearLayoutManager); return true; } if (id == R.id.action_GridView) { //设置布局样式 GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3,LinearLayoutManager.VERTICAL,false); // LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); myRecycleView.setLayoutManager(gridLayoutManager); return true; } if (id == R.id.action_GridViewHorizontal) { //设置布局样式 GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3,GridLayoutManager.HORIZONTAL,false); // LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); myRecycleView.setLayoutManager(gridLayoutManager); return true; } if (id == R.id.action_delete) { //先判断是哪个适配器 adapter.deleteData(2); return true; } if (id == R.id.action_add) { adapter.addData(2); return true; } return super.onOptionsItemSelected(item); }}
5、来几张效果图
0 1
- Android RecycleView的使用
- android RecycleView的使用
- android RecycleView的使用
- Android RecycleView---- RecycleView的简单使用
- Android 开发之RecycleView的简单使用
- android:RecycleView的简单封装使用
- Android中RecycleView的使用详解
- android recycleview使用
- android recycleView使用总结
- Android RecycleView使用详解
- Android Recycleview的用法
- Recycleview的使用
- RecycleView的使用
- RecycleView 的使用
- RecycleView的简单使用
- RecycleView 的使用
- RecycleView的基础使用
- RecycleView的学习使用
- ionic入门教程第十七课-深入讲解与服务器的交互$http、$q、设置头部、不包括$resourse
- 读书笔记:文件write及换行显示
- 上传代码到cocoapod
- ASP.NET(C#)常用数据加密和解密方法
- LBP简介
- android RecycleView的使用
- 【webpack】使用webpack进行ES6开发
- 【React-Native】学习指南
- memcached全面剖析–4. memcached的分布式算法
- HTTP 工作原理
- Qt Quick实现底部导航
- 文本输入框等字数统计【文字可包含中文/英文/符号/标点等】
- [转]某公司的几道面试题
- 阅读程序(5)