RecyclerView(4)简单示例

1,RecyclerViewFrgmt
import com.example.adapter.R;
import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class RecyclerViewFrgmt extends Fragment {
RecyclerView mRecyclerView;
RecyclerAdapter mAdapter;
String[] dataset;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frgmt_recycler_view_adapter, container,false);
mRecyclerView = (RecyclerView) v.findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);//可以设置recyler view 为横向
// 设置布局管理器
mRecyclerView.setLayoutManager(layoutManager);
dataset = ];
; i < dataset.length; i++){
dataset[i] = "item" + i;
}
mAdapter = new RecyclerAdapter(dataset);
mRecyclerView.setAdapter(mAdapter);
return v;
}
}
2,RecyclerAdapter
import com.example.adapter.R;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.Adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class RecyclerAdapter extends Adapter<RecyclerAdapter.ViewHolder> {
private String[] mDataset;//数据
//关键部分,每个item的holder
public static class ViewHolder extends RecyclerView.ViewHolder {//
public ImageView mIcon;
public TextView mContent;
public Button mBtn;
public ViewHolder(View itemView) {
20 super(itemView);
21 mIcon = (ImageView) itemView.findViewById(R.id.recycler_view_icon);
22 mContent = (TextView) itemView.findViewById(R.id.recycler_view_content);
23 mBtn = (Button) itemView.findViewById(R.id.recycler_view_btn);
}
}
public RecyclerAdapter(String[] dataset) {
mDataset = dataset;
}
@Override
public int getItemCount() {
return mDataset.length;
}
//把数据和 view holder绑定
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.mContent.setText(mDataset[position]);
holder.mBtn.setText("button" + position);
holder.mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("btn");
holder.mContent.setText("button" + position);
}
});
}
//创建一个view holder
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//1,inflater一个view
View view = View.inflate(parent.getContext(),R.layout.recycler_view_item, null);
//2,将view传给holder
ViewHolder holder = new ViewHolder(view);
return holder;
}
}
3,使用recyclerview的主布局 frgmt_recycler_view_adapter.xml
<?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="match_parent"
android:orientation="vertical" >
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
4,每个item的布局 recycler_view_item.xml
<?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="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/recycler_view_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_child2" />
<TextView
android:id="@+id/recycler_view_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
<Button
android:id="@+id/recycler_view_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
RecyclerView(4)简单示例的更多相关文章
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
- XML引入多scheme文件约束简单示例
XML引入多scheme文件约束简单示例,用company.xsd和department.xsd来约束company.xml: company.xsd <?xml version="1 ...
随机推荐
- cocos2dx中的用户数据的管理
提供了专门的类:CCUserDefault用来管理,且提供了单例方法:sharedUserDefault() 1.会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.w ...
- c语言编程之队列(链表实现)
用链表实现了队列,完成了队列的入队和出队功能. #include"stdio.h" typedef int element; typedef struct Node{ struct ...
- 玩转SmartQQ之登录
SmartQQ是腾讯新出的一个WebQQ,登录地址是:http://w.qq.com/,目前之前的WebQQ可以继续使用,登录地址:http://web2.qq.com/webqq.html,Smar ...
- 一个inline-block的样式。
<span style="height: 31px; font-family: 宋体; font-weight: bold; color: rgb(160, 64, 0); text- ...
- Notification用法
String message = "You should click come back now. It is time out more than 10 minutes."; / ...
- C#快速排序算法基础入门篇
相信算法对于许多开发人员来说都是一大难点,之所以难,就像设计模式一样,许多人在阅读之后,没有很好地理解,也不愿意动手上机操作,只停留在理论的学习上面,随着时间推移就慢慢淡忘. 有些东西,你可以发明创造 ...
- 【BZOJ】【1391】【CEOI2008】order
网络流/最小割 暴力建图就好了……S->i 容量为收益,i->j+n 容量为租金,j+n->T容量为购买所花的钱. 如果亏钱的话那么割掉的就是收益,表示不赚钱. 如果租金大于购买所花 ...
- 01-05-01-2【Nhibernate (版本3.3.1.4000) 出入江湖】立即加载实现--NHibernateUtil.Initialize()和添加fetch关键字的HQL查询
相关资料: http://www.cnblogs.com/lyj/archive/2008/10/29/1322373.html 问题的提出: 1.延迟加载,可能会引起session已经关闭的异常,例 ...
- java基础知识回顾之java Thread类学习(五)--java多线程安全问题(锁)同步的前提
这里举个例子讲解,同步synchronized在什么地方加,以及同步的前提: * 1.必须要有两个以上的线程,才需要同步. * 2.必须是多个线程使用同一个锁. * 3.必须保证同步中只能有一个线程在 ...
- ****Git 常用命令和使用思维导图
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. 本来想着只把最有用.最常用的 Git 命令记下来,但是总觉得这个也挺有用.那个也用 ...