Recyclerview的一些个人理解与使用(二)实现一个简单的列表界面
2017-04-05 15:53
986 查看
目录:
Recyclerview的一些个人理解与使用(一)adapter的简单封装
Recyclerview的一些个人理解与使用(二)实现一个简单的列表界面
Recyclerview的一些个人理解与使用(三)列表中的计时器
Recyclerview的一些个人理解与使用(四)在界面中实现侧边栏效果
Recyclerview的一些个人理解与使用(五)Recyclerview的联动,时间选择的实现
Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
Recyclerview的一些个人理解与使用(七)Recyclerview的嵌套与增加删除
公司项目前一段时间有些忙 ,忙完后赶紧就来写下了这篇文章,上次的文章
http://blog.csdn.net/ljwztn/article/details/64439879
中,我们对Recyclerview进行了一个基础的封装,这次我们就用上次的封装实现一个最简单的Recyclerview。
先来看看效果图
![](http://img.blog.csdn.net/20170511150935008?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGp3enRu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
一个简单的列表。下面是布局文件:
先是界面布局
然后是item的布局文件
然后是代码
在MainActivity中有个Recyclerview,我们对控件进行初始化。
BaseViewFinder我放在了common中
MainActivity界面代码:
BaseActivity是为了快速拿到当前界面的Context,也放在了common中,代码如下
接下来就是最重要的adapter。adapter确定了接收数据类型,确定了点击时需要用到的数据。
adapter对应的holder,我们在holder中对于接收到的数据进行处理,可以根据需求,在initView中加入需要的参数,这里我对于数据,与数据点击,与数据所在位置进行了处理,目前需要这三个参数。
这样我们就实现了一个简单的列表。
最近在研究git,准备到时候提交一个完整的项目到上面以便于大家参照。到时候我会贴出项目地址。
项目地址
https://github.com/Liveinadream/RecyclerViewDemo#recyclerviewdemo
如有疑问大家可以添加 121606151 这个qq群@Crazy(即本人)即可,欢迎大家前来交流。
Recyclerview的一些个人理解与使用(一)adapter的简单封装
Recyclerview的一些个人理解与使用(二)实现一个简单的列表界面
Recyclerview的一些个人理解与使用(三)列表中的计时器
Recyclerview的一些个人理解与使用(四)在界面中实现侧边栏效果
Recyclerview的一些个人理解与使用(五)Recyclerview的联动,时间选择的实现
Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
Recyclerview的一些个人理解与使用(七)Recyclerview的嵌套与增加删除
公司项目前一段时间有些忙 ,忙完后赶紧就来写下了这篇文章,上次的文章
http://blog.csdn.net/ljwztn/article/details/64439879
中,我们对Recyclerview进行了一个基础的封装,这次我们就用上次的封装实现一个最简单的Recyclerview。
先来看看效果图
一个简单的列表。下面是布局文件:
先是界面布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.ztn.recyclerviewdemo.MainActivity"> <RelativeLayout android:id="@+id/main_activity_recyclerview_rl" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/main_activity_recyclerview" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </RelativeLayout> </LinearLayout>
然后是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"> <TextView android:id="@+id/simple_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="5dp" android:textSize="14sp"/> </LinearLayout>
然后是代码
在MainActivity中有个Recyclerview,我们对控件进行初始化。
/** * Created by ztn on 2017/3/28 * * @see MainActivity */ public class MainActivityHolder extends BaseViewFinder { RecyclerView recyclerView; protected MainActivityHolder(Activity activity) { super(activity); recyclerView = (RecyclerView) activity.findViewById(R.id.main_activity_recyclerview); recyclerView.setLayoutManager(new LinearLayoutManager(activity)); } }
BaseViewFinder我放在了common中
/** * * Created by ztn on 2017/3/28 * <p> * 所有activity的界面holder都继承这个Base,以便于界面功能分离 ,记得在app的gradle中,对common进行依赖 */ public abstract class BaseViewFinder { protected Activity activity; protected BaseViewFinder(Activity activity) { this.activity = activity; } }
MainActivity界面代码:
/** * Created by ztn on 2017/3/28 */ public class MainActivity extends BaseActivity { MainActivityHolder mainActivityHolder; List<String> main; MainRecyclerViewAdapter mainRecyclerViewAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainActivityHolder = new MainActivityHolder(this); main = new ArrayList<>(); main.add("简单的RecyclerView"); for (int i = 0; i < 40; i++) { main.add(i + ""); } mainRecyclerViewAdapter = new MainRecyclerViewAdapter(getContext(), main); mainActivityHolder.recyclerView.setAdapter(mainRecyclerViewAdapter); mainRecyclerViewAdapter.notifyDataSetChanged(); mainRecyclerViewAdapter.setOnClickItemListener(new MainRecyclerViewAdapter.OnClickItemListener() { @Override public void onClick(String string, int position) { if (position == 0) { Toast.makeText(getContext(), "本界面就是一个简单的Recyclerview", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getContext(), "准备中的Recyclerview", Toast.LENGTH_SHORT).show(); } } }); } }
BaseActivity是为了快速拿到当前界面的Context,也放在了common中,代码如下
/** * 上层基类 * Created by ztn on 2017/3/28 */ @SuppressLint("Registered") public class BaseActivity extends AppCompatActivity { public BaseActivity getContext() { return this; } }
接下来就是最重要的adapter。adapter确定了接收数据类型,确定了点击时需要用到的数据。
/** * Created by ztn on 2017/3/28 */ public class MainRecyclerViewAdapter extends SimpleRecycleViewAdapter<String, MainRecyclerViewHolder> { private OnClickItemListener onClickItemListener; //接收String类型数据 public MainRecyclerViewAdapter(Context context, List<String> listData) { super(context, listData); } /** * 创建View * * @param parent * @return */ @Override protected MainRecyclerViewHolder onCreateItemViewHolder(ViewGroup parent) { return new MainRecyclerViewHolder(inflater.inflate(R.layout.a_simple_text_view, parent, false)); } public void setOnClickItemListener(OnClickItemListener onClickItemListener) { this.onClickItemListener = onClickItemListener; } /** * 给View设置数据 * * @param mainRecyclerViewHolder * @param position */ @Override protected void onBindItemViewHolder(MainRecyclerViewHolder mainRecyclerViewHolder, int position) { mainRecyclerViewHolder.initView(context, listData.get(position), onClickItemListener,position); } /** * 便于实现点击事件 */ public interface OnClickItemListener { void onClick(String string, int position); } }
adapter对应的holder,我们在holder中对于接收到的数据进行处理,可以根据需求,在initView中加入需要的参数,这里我对于数据,与数据点击,与数据所在位置进行了处理,目前需要这三个参数。
/** * Created by ztn on 2017/3/28 */ public class MainRecyclerViewHolder extends RecyclerView.ViewHolder { TextView textView; public MainRecyclerViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.simple_tv); } public void initView(Context context, final String string, final MainRecyclerViewAdapter.OnClickItemListener onClickItemListener, final int position) { textView.setText(string); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onClickItemListener != null) onClickItemListener.onClick(string, position); } }); } }
这样我们就实现了一个简单的列表。
最近在研究git,准备到时候提交一个完整的项目到上面以便于大家参照。到时候我会贴出项目地址。
项目地址
https://github.com/Liveinadream/RecyclerViewDemo#recyclerviewdemo
如有疑问大家可以添加 121606151 这个qq群@Crazy(即本人)即可,欢迎大家前来交流。
相关文章推荐
- Recyclerview的一些个人理解与使用(一)adapter的简单封装
- Recyclerview的一些个人理解与使用(五)Recyclerview的联动,时间选择的实现
- Recyclerview的一些个人理解与使用(三)列表中的计时器
- 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站
- Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
- 使用RecyclerView 简单实现QQ好友列表展开效果
- Recyclerview的一些个人理解与使用(七)Recyclerview的嵌套与增加删除
- Recyclerview的一些个人理解与使用(四)在界面中实现侧边栏效果
- UI基础第十四弹:使用UItableview完成一个简单的QQ好友列表(一)
- ViewPager+Fragment的结合使用,实现QQ界面的理解
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(二)
- Silverlight学习笔记一(理解一下机制,使用一下布局,实现一个简单的用户登录)
- 使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS开发UI篇章使用UItableview完成一个简单的QQ好友列表(一)
- DayDayUp之HTML5学习笔记 二 使用header、aside、section、footer实现一个简单的界面
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- UI基础第十四弹:实现UItableview使用嵌套模型完成的一个简单汽车图标展示程序
- iOS开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局