recycleview 的 ItemView常用验证
来源:互联网 发布:约拍用什么软件最好 编辑:程序博客网 时间:2024/04/29 14:35
引用:
dependencies {... compile 'com.android.support:recyclerview-v7:25.3.1'}
代码:
1、item布局
<?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="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/id_num" android:layout_width="match_parent" android:layout_height="100dp" android:background="#ff5500" android:gravity="center" android:text="hello" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimary" /></LinearLayout>
2、适配器代码
package com.example.lihui.testrecycleview;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;/** * Created by lihui on 2017/8/22. */public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> { private static final String TAG = "MyRecyclerAdapter"; private List<String> mData; private Context mContext; private LayoutInflater inflater; public MyRecyclerAdapter(Context context, List<String> data) { this.mContext = context; this.mData = data; inflater = LayoutInflater.from(mContext); } @Override public int getItemCount() { return mData.size(); } @Override public void onViewRecycled(MyViewHolder holder) { super.onViewRecycled(holder); Log.d(TAG, "onViewRecycled: " + holder.tv.getText().toString() + ", position: " + holder.getAdapterPosition()); } //填充onCreateViewHolder方法返回的holder中的控件 @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { Log.d(TAG, "onBindViewHolder: 验证是否重用了"); Log.d(TAG, "onBindViewHolder: 重用了" + holder.tv.getTag()); Log.d(TAG, "onBindViewHolder: 放到了" + mData.get(position)); holder.tv.setText(mData.get(position)); holder.tv.setTag(mData.get(position)); } //重写onCreateViewHolder方法,返回一个自定义的ViewHolder @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.d(TAG, "onCreateViewHolder"); View view = inflater.inflate(R.layout.item_layout, parent, false); return new MyViewHolder(view); } static class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View view) { super(view); tv = (TextView) view.findViewById(R.id.id_num); } }}
3、activity代码
package com.example.lihui.testrecycleview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> mData; private MyRecyclerAdapter recycleAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.id_recyclerView); initData(); recycleAdapter = new MyRecyclerAdapter(MainActivity.this, mData); //设置布局管理器 , 将布局设置成纵向 LinearLayoutManager linerLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(linerLayoutManager); // ... recyclerView.setAdapter(recycleAdapter); // ... } private void initData() { mData = new ArrayList<>(); mData.add("test1"); //0 mData.add("test2"); //0 mData.add("test3"); //0 mData.add("test4"); //0 mData.add("test5"); //0 mData.add("test6"); //0 mData.add("test7"); //0 mData.add("test8"); //0 mData.add("test9"); //0 mData.add("test10"); //0 mData.add("test11"); //0 mData.add("test12"); //0 mData.add("test13"); //0 mData.add("test14"); //0 }}
4、recycleview 布局
<?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" tools:context="com.example.lihui.testrecycleview.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/id_recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
log打印:
08-22 23:08:25.601 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:08:25.604 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:08:25.604 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:08:25.604 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test108-22 23:08:25.605 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:08:25.608 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:08:25.608 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:08:25.608 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test208-22 23:08:25.608 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:08:25.609 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:08:25.609 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:08:25.609 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test308-22 23:08:25.610 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:08:25.611 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:08:25.611 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:08:25.611 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test408-22 23:08:25.611 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:08:25.614 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:08:25.614 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:08:25.614 10929-10929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test51、手机一屏显示5条往上滑动:08-22 23:18:19.953 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:19.956 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:19.956 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:19.956 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test108-22 23:18:19.956 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:19.965 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:19.965 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:19.965 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test208-22 23:18:19.972 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:19.973 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:19.973 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:19.973 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test308-22 23:18:19.973 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:19.974 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:19.974 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:19.974 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test408-22 23:18:19.975 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:19.976 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:19.976 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:19.976 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test508-22 23:18:28.460 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:28.467 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:28.467 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:28.467 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test608-22 23:18:40.344 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:40.352 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:40.352 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:40.352 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test708-22 23:18:45.058 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:45.065 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:45.065 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:45.065 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test808-22 23:18:47.950 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onCreateViewHolder08-22 23:18:47.955 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:47.955 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了null08-22 23:18:47.955 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test908-22 23:18:48.658 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test1, position: 008-22 23:18:51.126 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了***********************************************************08-22 23:18:51.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了test1***********************************************************08-22 23:18:51.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test10从第10个开始重用(第一个)08-22 23:18:48.658 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test1, position: 008-22 23:18:51.126 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:18:51.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了test108-22 23:18:51.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test1008-22 23:20:53.751 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test2, position: 1 [ 08-22 23:20:53.782 27800:27800 I/ ] power log dlsym ok08-22 23:20:53.838 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:20:53.838 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了test208-22 23:20:53.838 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test1108-22 23:20:54.528 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test3, position: 208-22 23:20:55.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:20:55.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了test308-22 23:20:55.127 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test1208-22 23:20:55.140 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test4, position: 308-22 23:21:00.171 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:21:00.171 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了test408-22 23:21:00.171 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test1308-22 23:21:00.351 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test5, position: 408-22 23:21:00.667 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 验证是否重用了08-22 23:21:00.667 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 重用了test508-22 23:21:00.667 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onBindViewHolder: 放到了test1408-22 23:21:01.027 18929-18929/com.example.lihui.testrecycleview D/MyRecyclerAdapter: onViewRecycled: test6, position: 5研究发现,具体从哪一个开始重用不确定!!!!内部已经实现了,算法什么样子,我们不需要知道!!!
阅读全文
0 0
- recycleview 的 ItemView常用验证
- RecycleView获取当前屏幕中itemview的显示区域
- 仿ListView源码添加ReCycleView头部和底部ItemView的功能
- 万能的ItemView
- 常用控件(二.2) : RecycleView 的使用
- 加载RecycleView时为itemVIew添加一些过渡动画(一)
- 加载RecycleView时为itemView添加一些过渡动画(一)
- RecyclerView的itemView的点击效果
- ListView 中ItemView 的重用原理
- ExpandListView 多个ItemView的效率优化
- 关于Android ListView 多ItemView的问题
- Android ListView添加多种类型的ItemView
- 解析RecyclerView中itemView的动画
- ExpandListView 多个ItemView的效率优化
- ClauseView个人中心、设置的ItemView
- ListView、recyclerView的itemView布局注意事项
- 常用的脚本验证
- 常用的验证
- GridFS
- java杂记
- ref 20170822
- numpy的array数组操作
- oracle12c 启动多个实例
- recycleview 的 ItemView常用验证
- UVA 116 Unidirectional TSP(DP+记忆化搜索)
- 二叉树类基本实现
- 生活(合租感)
- vue之html代码实现
- 调用MessageBox会再次进入消息循环
- 2018今日头条内推笔试1
- Linux: find命令 ‘/proc/xxxx/task/xxxx/fd/y’: No such file or directory 解决办法
- Django中的simple_tag