ListView的基本使用方法和RecyclerView的基本使用方法
ListView是一种用于列表显示数据内容的控件,它可以通过适配器实现对于数据的列表显示,而RecyclerView是对于ListView优化后的列表数据显示控件。
个人对于List的使用经历多半在新浪微博集成的时候使用,故这里仅仅是记载RecyclerView的使用方法,
而对于ListView的方法可在aliCamera项目中,要想查找可直接查找自己以前写过的源码!
RecyclerView的使用方法:
1.在要使用RecyclerView的项目中,打开open module setting 选择APP的Dependencies选项,选择添加Library Dependency选项,添加RecyclerView的包
2.在对应的Activity中添加对应的代码
具体的代码实现:
package andrew.com.custompaintdemo; import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import android.widget.TextView; public class MainActivity extends AppCompatActivity implements BlankFragment.OnFragmentInteractionListener { private RecyclerView rv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); rv = new RecyclerView(this); //新建一个RecyclerView对象
rv.setLayoutManager(new LinearLayoutManager(this)); //设置这个RecyclerView的布局为线性布局
setContentView(rv); //将RecyclerView作为界面 rv.setAdapter(new RecyclerView.Adapter() { //设置适配器 class ViewHolder extends RecyclerView.ViewHolder{ //这是一个用于设计RecyclerView的界面元素的类 private TextView tv; public ViewHolder(TextView itemView) {
super(itemView);
tv = itemView;
} public TextView getTv() {
return tv;
}
}
//以下部分与ListView类似,简单易懂
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(new TextView(getApplicationContext()));
} @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder h = (ViewHolder) holder;
h.getTv().setTextColor(getResources().getColor(R.color.colorAccent));
h.getTv().setText("item"+position);
} @Override
public int getItemCount() {
return 100;
}
}); } }
使用XML资源文件的配置方法:
1.先设置自定义adapter,继承RecylerView.adapter,绑定XML file,设置适配方法
具体代码:
package andrew.com.custompaintdemo; import android.app.Activity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; /**
* Created by Andrew on 2016/7/26.
*/
class MyAdapter extends RecyclerView.Adapter { private Activity mainActivity; public MyAdapter(Activity mainActivity) {
this.mainActivity = mainActivity;
} class ViewHolder extends RecyclerView.ViewHolder{ private View root;
private TextView tv1,tv2; public ViewHolder(View view) {
super(view);
root = view;
//绑定布局控件的方法
tv1 = (TextView) root.findViewById(R.id.tv1);
tv2 = (TextView) root.findViewById(R.id.tv2);
} public TextView getTv1() {
return tv1;
} public TextView getTv2() {
return tv2;
}
} @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //精华只在这一句!精华只在这一句!精华只在这一句!
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list,null));
} @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder h = (ViewHolder) holder;
h.getTv1().setTextColor(mainActivity.getResources().getColor(R.color.colorAccent));
h.getTv1().setText("item" + position);
h.getTv2().setTextColor(mainActivity.getResources().getColor(R.color.colorAccent));
h.getTv2().setText("content"); } @Override
public int getItemCount() {
return 100;
}
}
XML的配置情况:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"/>
</LinearLayout>
在Activity中可以通过一些配置来改变界面的显示状况:
rv.setLayoutManager(new GridLayoutManager(this,4)); //表格布局形式
rv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,TRUE)) //水平布局形式
ListView的基本使用方法和RecyclerView的基本使用方法的更多相关文章
- java static成员变量方法和非static成员变量方法的区别
这里的普通方法和成员变量是指,非静态方法和非静态成员变量首先static是静态的意思,是修饰符,可以被用来修饰变量或者方法. static成员变量有全局变量的作用 非static成员变量则 ...
- final方法,abstract方法和abstract类,native方法
final方法 1.为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖(override),可以使用final方法. 2.为了效率上的考虑,将方法声明为final,让编译器对此方法的调用进行优 ...
- 数组的foreach方法和jQuery中的each方法
/* * 数组的forEach方法: * 1.返回给回调的参数先是值,然后是下标 * 2.回调函数执行时内部的this指向window * */ /*var arr = [1,2,3,4,5]; ar ...
- 详解Integer.toString(int i)方法和String.valueOf(int i)方法
通过查看String类的源码: public static String valueOf(int i) { return Integer.toString(i); } 我们可以看到,String.va ...
- java static成员变量方法和非static成员变量方法的区别 ( 二 )
原创文章,未经作者允许,禁止转载!!! 静态成员变量不用new对象,在类加载的过程中就已经初始化存放在数据区域,静态成员变量是类和所有对象共有的,类和对象都可以改变它的值,每一次改变值之后,静态成员变 ...
- OC语言description方法和sel
OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象 ...
- 李洪强iOS开发之OC语言description方法和sel
OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象 ...
- ListView为什么用setOnItemClick这个方法和onTouch这个方法有冲突
因为如果onTouch方法中返回true的话,这次事件就被ListView中的item控件消费了,所以不会执行ListVIew的setOnItemClick这个方法了,如果onTouch方法返回fal ...
- ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法
原文 Examining the Details and Delete methods 作者 Rick Anderson 翻译 谢炀(Kiler) 校对 许登洋(Seay).姚阿勇(Mr.Yao) 打 ...
随机推荐
- clearfix 用法
如果有一个DIV作为外部容器,内部的DIV如果设置了float样式,则外部的容器DIV因为内部没有 clear,导致不能被撑开.看下面的例子:Div布局如下:Css代码如下:.out{border:1 ...
- 1.oracle之表管理sql
/*数据类型1. number(M,N) 整数位和小数位最多是M,其中小数位为N位2. char(M):定长字符串,长度为M,如果插入数据时长度小于M,则在末尾补上空格3. varchar2(M) ...
- SLEUTH 城市扩张模型
3.19号准备试着运行一下SLEUTH模型,但是好不容易没报错出了一个test的结果,我就再也没看过了,导致现在我竟然差不多忘记当时怎么搞出来的了... 这也提醒我了,,,以后解决一个什么东西一定要立 ...
- WEBBASE篇: 第九篇, JavaScript知识4
JavaScript 4 练习1 <!doctype html> <html lang="en"> <head> <meta charse ...
- linux shell 指令搜索顺序
在linux shell 中输入一个命令,如果有多个同名指令,shell需要按照一定规则去取优先级高的一个执行,shell命令的搜索顺序为: 1.别名,使用alias创建的命令. 2.关键字,如if, ...
- Linux Centos7下如何确认MySQL服务已经启动
Linux CentOS一般做为服务器使用,因此,MySQL服务应该随开机自动启动的.正常情况下,查看开机自动启动的服务使用chkconfig命令,如下: #chkconfig --list 实际使用 ...
- (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)
获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...
- Centos6.8 编译安装Apache2.4
cetos6.8源码安装apache2.4.29 apache官网:http://httpd.apache.org 具体安装步骤: 1 配置安装apache的基础环境2 下载想要安装的版本源码包3 解 ...
- Google - chanceToLose24Game
/* 一个类似24点的游戏,假设牌桌上有无数张1-10的牌,然后你手上的牌的总和是k,现在你可以随机到牌桌上抽牌加到总和里,如果你手上牌的总和在20-25之间就是win,如果总和超过25就是lose, ...
- pam模块初探