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) 打 ...
随机推荐
- leetcode题解 1.TwoSum
1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a ...
- 剑指Offer 8. 跳台阶 (递归)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 题目地址 https://www.nowcoder.com/pract ...
- angular5理解生命周期
先来看下文档: 按照顺序有八个: 1.ngOnChanges()=>简单理解为当数据绑定输入属性的值发生变化时调用: 2.ngOnInit() => 在调用完构造函数.初始化完所有输入属性 ...
- go延时队列
package main import ( "errors" "flag" "fmt" log "github.com/cihub ...
- 链接属性external的使用
//demo1.c #include<stdio.h> ; //static int x = 10; void print(void) //static void print(void) ...
- 分布式高并发下Actor模型
分布式高并发下Actor模型 写在开始 一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递.使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争.处理各种锁的问题是让人十分头痛的 ...
- 成功的拆开了SELECT里JOIN个SELECT是啥
SELECT * FROM table JOIN table ON a=b ----------------------- JOIN (SELECT* FROM table JOIN table ON ...
- C语言中->是什么意思啊?比如说 p=p->next 到底表达了什么意思,请说清楚点,还有->这个符号是一个整体吗,什么意思??
->是一个整体,它是用于指向结构体.C++中的class等含有子数据的指针用来取子数据.换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中 ...
- AES对称加密和解密(转)
AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ...
- 第六届蓝桥杯省赛 java三羊献瑞
将文字看作一个个变量.根据一开始确定的文字的值进行暴力循环. 三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞------------------- 三 羊 生 瑞 气 (如果有对齐 ...