设为首页 加入收藏

TOP

Android RecyclerView 的简单使用(一)
2015-08-31 21:24:46 来源: 作者: 【 】 浏览:112
Tags:Android RecyclerView 简单 使用

  今天这里主要讲述的是 RV 简单用法:


  1.跟ListView 一样 需要一个 Adapter


  2.跟ListView 一样 需要一个 ViewHolder


  3.有点不同了, 需要一个LayoutManager


  详细过程看代码吧:


package com.jarrah.demo;


import java.util.ArrayList;


import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;


public abstract class RecyclerViewActivity extends ActionBarActivity{
? ?
? ?
? ? protected RecyclerView mRecyclerView;
? ? protected Adapter mAdapter;
? ?
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? mRecyclerView = new RecyclerView(this);
? ? ? ? setContentView(mRecyclerView);
? ? ? ?
? ? ? ? //配置RecyclerView 可以提高执行效率, 前提你要知道有多少不变的item
? ? ? ? // use this setting to improve performance if you know that changes
? ? ? ? // in content do not change the layout size of the RecyclerView
? ? ? ? mRecyclerView.setHasFixedSize(true);
? ? ? ?
? ? ? ? //初始化适配器
? ? ? ? mAdapter = new Adapter() {


? ? ? ? ? ? @Override
? ? ? ? ? ? public ViewHolder onCreateViewHolder(ViewGroup group,
? ? ? ? ? ? ? ? ? ? int position) {
? ? ? ? ? ? ? ? return newViewHolder(group, position);
? ? ? ? ? ? }
? ? ? ? ? ?
? ? ? ? };
? ? ? ?
? ? ? ? mRecyclerView.setAdapter(mAdapter);
? ? ? ?
? ? ? ? //设置一个垂直方向的layout manager
? ? ? ? int orientation = LinearLayoutManager.VERTICAL;
? ? ? ? mRecyclerView.setLayoutManager(getLayoutManager(orientation));
? ? }



? ? protected LinearLayoutManager getLayoutManager(int orientation) {
? ? ? ? return new LinearLayoutManager(this, orientation, false);
? ? }



? ?
? ? /**
? ? * 实例化一个ViewHolder
? ? * @param group
? ? * @param position
? ? * @return
? ? */
? ? public abstract ViewHolder newViewHolder(ViewGroup group, int position);



? ? public static abstract class Adapter extends RecyclerView.Adapter> {
? ? ? ?
? ? ? ? private ArrayList mList;
? ? ? ?
? ? ? ? public T getItem(int position) {
? ? ? ? ? ? return mList == null ? null : mList.get(position);
? ? ? ? }
? ? ? ?
? ? ? ? @Override
? ? ? ? public int getItemCount() {
? ? ? ? ? ? return mList == null ? 0 : mList.size();
? ? ? ? }


? ? ? ? @Override
? ? ? ? public void onBindViewHolder(
? ? ? ? ? ? ? ? ViewHolder vh, int position) {
? ? ? ? ? ? vh.onBind(getItem(position), vh.itemView);
? ? ? ? }
? ? ? ?
? ? ? ? public void setData(ArrayList data) {
? ? ? ? ? ? mList = data;
? ? ? ? ? ? notifyDataSetChanged();
? ? ? ? }
? ? }
? ?
? ? public static abstract class ViewHolder extends RecyclerView.ViewHolder {
? ? ? ?
? ? ? ? public ViewHolder(View v) {
? ? ? ? ? ? super(v);
? ? ? ? }
? ? ? ?
? ? ? ? /**
? ? ? ? * view holder 绑定数据
? ? ? ? * @param data
? ? ? ? * @param v
? ? ? ? */
? ? ? ? public abstract void onBind(T data, View v);
? ? ? ?
? ? }
? ?
}


下面是demo activity


?


package com.jarrah.demo;


import java.util.ArrayList;
import java.util.Arrays;


import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;


public class DemoActivity extends RecyclerViewActivity{


? ? @Override
? ? public ViewHolder newViewHolder(ViewGroup group, int position) {
? ? ? ?
? ? ? ? final TextView tv = new TextView(this);
? ? ? ? tv.setPadding(20, 20, 20, 20);
? ? ? ? tv.setOnClickListener(new OnClickListener() {
? ? ? ? ? ?
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View v) {
? ? ? ? ? ? ? ? String text = tv.getText().toStr

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何在Python中正确使用static、c.. 下一篇用 Python 和 OpenCV 检测图片上..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: