RecycleView在eclipse的初体验

在sdk中找到v7包

\sdk\extras\android\support\v7\recyclerview

导入工程

Import\Android\Existing Android Code Into Workspace

将导入的recycleview作为依赖库Library

工程上右键properties,勾选is Library,Apply,ok

将recycleview\libs\android_support_v7_recycleview.jar包复制粘贴到主工程的libs文件夹下

在layout中使用<android.support.v7.widget.RecyclerView/>标签

MainActivity代码

  1 package com.jiatu.recyclerviewtest;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 import android.app.Activity;
  6 import android.os.Bundle;
  7 import android.support.v7.widget.DefaultItemAnimator;
  8 import android.support.v7.widget.GridLayoutManager;
  9 import android.support.v7.widget.LinearLayoutManager;
 10 import android.support.v7.widget.RecyclerView;
 11 import android.support.v7.widget.RecyclerView.ViewHolder;
 12 import android.view.LayoutInflater;
 13 import android.view.View;
 14 import android.view.ViewGroup;
 15 import android.widget.LinearLayout;
 16 import android.widget.TextView;
 17 import android.widget.Toast;
 18
 19 public class MainActivity extends Activity {
 20     private RecyclerView recyclerView;
 21     private List<Person> list = new ArrayList<Person>();
 22     private LinearLayoutManager mLayoutManager;
 23     // private GridLayoutManager mGridLayoutManager;
 24
 25     @Override
 26     protected void onCreate(Bundle savedInstanceState) {
 27         super.onCreate(savedInstanceState);
 28         setContentView(R.layout.activity_main);
 29         recyclerView = (RecyclerView) findViewById(R.id.recycler_view_test_rv);
 30         recyclerView.setHasFixedSize(true); // 固定item的高或者宽,提高性能
 31         recyclerView.setItemAnimator(new DefaultItemAnimator());
 32
 33         mLayoutManager = new LinearLayoutManager(this);
 34         // 设置list的方向,默认是垂直
 35         // mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
 36
 37         // 5,spanCount:列数
 38         // mGridLayoutManager = new GridLayoutManager(this, 5);
 39
 40         recyclerView.setLayoutManager(mLayoutManager);
 41
 42         initData();
 43         setPersonAdapter();
 44
 45     }
 46
 47     /**
 48      * 设置适配器
 49      */
 50     private void setPersonAdapter() {
 51         final PersonAdapter adapter = new PersonAdapter(list);
 52         adapter.setOnRecyclerViewListener(new OnRecyclerViewListener() {
 53
 54             @Override
 55             public boolean onItemLongClick(int position) {
 56                 adapter.addData(position);
 57                 Toast.makeText(MainActivity.this, "吼吼吼吼吼", Toast.LENGTH_SHORT).show();
 58                 return true;
 59             }
 60
 61             @Override
 62             public void onItemClick(int position) {
 63                 adapter.removeData(position);
 64                 Toast.makeText(MainActivity.this, "哈哈哈哈哈", Toast.LENGTH_SHORT).show();
 65             }
 66         });
 67
 68         recyclerView.setAdapter(adapter);
 69     }
 70
 71     /**
 72      * RecyclerView的单击和长按事件监听
 73      *
 74      * @author fans created on 2016年11月3日
 75      *
 76      */
 77     public interface OnRecyclerViewListener {
 78         void onItemClick(int position);
 79
 80         boolean onItemLongClick(int position);
 81     }
 82
 83     /**
 84      * 适配器
 85      *
 86      * @author fans created on 2016年11月3日
 87      *
 88      */
 89     class PersonAdapter extends RecyclerView.Adapter<ViewHolder> {
 90
 91         private OnRecyclerViewListener onRecyclerViewListener;
 92
 93         public void setOnRecyclerViewListener(OnRecyclerViewListener onRecyclerViewListener) {
 94             this.onRecyclerViewListener = onRecyclerViewListener;
 95         }
 96
 97         private List<Person> list = new ArrayList<Person>();
 98
 99         public PersonAdapter(List<Person> list) {
100             this.list = list;
101         }
102
103         /**
104          * 增加一个item
105          *
106          * @param position
107          */
108         public void addData(int position) {
109             list.add(position, new Person("fans+", 23));
110             notifyItemInserted(position);
111             notifyItemRangeChanged(position, list.size());
112         }
113
114         /**
115          * 删减一个item
116          *
117          * @param position
118          */
119         public void removeData(int position) {
120             list.remove(position);
121             notifyDataSetChanged();
122             notifyItemRemoved(position);
123             notifyItemRangeChanged(position, list.size());
124         }
125
126         @Override
127         public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
128
129             View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, null);
130             LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
131                     ViewGroup.LayoutParams.WRAP_CONTENT);
132             view.setLayoutParams(lp);
133             return new PersonViewHolder(view);
134         }
135
136         @Override
137         public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
138             PersonViewHolder holder = (PersonViewHolder) viewHolder;
139             holder.position = i;
140             Person person = list.get(i);
141             holder.nameTv.setText(person.name);
142             holder.ageTv.setText(person.age + "岁");
143         }
144
145         @Override
146         public int getItemCount() {
147             return list.size();
148         }
149
150         class PersonViewHolder extends RecyclerView.ViewHolder
151                 implements View.OnClickListener, View.OnLongClickListener {
152             public View rootView;
153             public TextView nameTv;
154             public TextView ageTv;
155             public int position;
156
157             public PersonViewHolder(View itemView) {
158                 super(itemView);
159                 nameTv = (TextView) itemView.findViewById(R.id.recycler_view_test_item_person_name_tv);
160                 ageTv = (TextView) itemView.findViewById(R.id.recycler_view_test_item_person_age_tv);
161                 rootView = itemView.findViewById(R.id.recycler_view_test_item_person_view);
162                 rootView.setOnClickListener(this);
163                 rootView.setOnLongClickListener(this);
164             }
165
166             @Override
167             public void onClick(View v) {
168                 if (null != onRecyclerViewListener) {
169                     onRecyclerViewListener.onItemClick(position);
170                 }
171             }
172
173             @Override
174             public boolean onLongClick(View v) {
175                 if (null != onRecyclerViewListener) {
176                     return onRecyclerViewListener.onItemLongClick(position);
177                 }
178                 return false;
179             }
180         }
181
182     }
183
184     /**
185      * 填充数据
186      */
187     private void initData() {
188         for (int i = 0; i < 10; i++) {
189             list.add(new Person("fans" + i, 10 + i));
190         }
191     }
192
193     class Person {
194         public String name;
195         public int age;
196
197         public Person(String name, int age) {
198             super();
199             this.name = name;
200             this.age = age;
201         }
202
203     }
204 }

layout代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view_test_rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#bbccaa"
        android:scrollbars="vertical" />

</RelativeLayout>

item代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:id="@+id/recycler_view_test_item_person_view"
 4     android:layout_width="match_parent"
 5     android:layout_height="wrap_content"
 6     android:background="#aabbcc"
 7     android:orientation="vertical"
 8     android:padding="15dp" >
 9
10     <TextView
11         android:id="@+id/recycler_view_test_item_person_name_tv"
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content"
14         android:background="#ccbbaa"
15         android:textSize="18sp" />
16
17     <TextView
18         android:id="@+id/recycler_view_test_item_person_age_tv"
19         android:layout_width="match_parent"
20         android:layout_height="wrap_content"
21         android:background="#aaccbb"
22         android:paddingLeft="5dp"
23         android:textSize="15sp" />
24
25 </LinearLayout>
时间: 2024-10-03 14:06:06

RecycleView在eclipse的初体验的相关文章

Android Studio初体验之启动AVD模拟器异常:cannot set up guest memory &#39;pc.ram&#39;

启动AVD模拟器异常:Cannot set up guest memory 'pc.ram' 错误信息: HAX is working and emulator runs in fast virt mode Cannot set up guest memory 'pc.ram': Invalid argument Error accepting connect 分析 各种查资料,没有发现网上有同样问题的,在一篇相关文章中找到类似的解决方法. 从语意看,应该是hax安装后没有启动.(不懂hax是什

Cocos2dx3.1-Android环境搭建初体验

初玩Cocos2dx,多多包涵. 感觉版本之间的差异比较大,相对前面的版本来说,3.X更容易上手,更方便了. 一.安装python.我的python-2.7.3.配置环境变量 系统变量里:在Path里面增加 D:\2013\python\Python27 二.安装ant.我的apache-ant-1.9.3.配置环境变量 系统变量里:新建一个,ANT_HOME(D:\2013\ant\apache-ant-1.9.3),然后在Path里面增加 D:\2013\ant\apache-ant-1.9

Cocos2dx-Android初体验

windows下android平台cocos2dx. 首先得自己具备如下eclipse(adt.cdt).cygwin.android-ndk .android-sdk,自己下载安装,不做详细解释. 一.下载cocos2dx. http://www.cocos2d-x.org/download 我的cocos2dx目录为D:\2013\cocos2dx\cocos2d-x-2.1.4\cocos2d-x-2.1.4 二.首先进行android版配置,需要修改几个地方. 1.进入目录,修改crea

Android Studio 初体验

Google在I/O2013大会上公布了Android新的开发工具Android Studio,趁周末时间做了一下尝试.有须要的能够 在http://developer.android.com/sdk/installing/studio.html下载,当前版本号是V0.1.官方解释:Android Studio is a new Android development environment based on IntelliJ IDEA. Similar to Eclipse with the

屌丝就爱尝鲜头——java8初体验

Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分别是Java SE8.Java SE Emebbled 8.Java ME8. Java SE8较以往的系统增强的功能有: ①增强了对集合式操作语言--lambda表达式的支持,"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演

ipython及Python初体验

阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一.Python环境体验 1.常见Python编辑器介绍 1.在linux下使用vim 编辑Python脚本时,推荐--没有道理-- 2.Eclipse 3.notepad++:挺好用的一款编辑工具 4.IDLE (官方自带)交互式的开发语言集成环境 5.pycharm  第三方的工具:ipython

Kotlin初体验

让我们从一个小例子开始,来看看 Kotlin 代码长什么样子.这个例子定义了一个 Person 类来表示"人",创建一个"人"的集合,查找其中年纪最大的人,并打印结果.尽管这是非常小的一段代码,从中也可以看到 Kotlin 许多有趣的特性.  我们对其中的一些特性做了标记,以便你可以方便地在本书后续的内容中找到它们.  代码简要地进行了解释,但是如果有些内容你现在还无法理解,请不要担心,稍后我们会详细讨论.  如果你想尝试运行这个例子,最简单的方法是使用 http:

Mac OS 下 Visual studio code初体验

Mac OS 下 Visual studio code初体验 随着微软开源策略的一步步推进,终于等到了跨平台的Visual Studio Code.作为一名使用MacBook 的.NET程序猿,不得不说是一种福音.(尝试过使用Xamarin/Eclipse/IDEA在Mac下编辑.net源代码,用起来都不是特别的爽.) 一下就在mac系统上搭建开发环境的过程简单的整理一下. 依赖的环境 mono 4.0.1 dnvm/dnx https://github.com/aspnet/home nodj

Android插件化开发之Atlas初体验

OpenAtlas一款强大的Android非代理动态部署框架,目前已经处于稳定定状态. 与传统的代理方式插件不同,OpenAtlas需要对注册动态部署的组件到manifest文件. 初体验,只不过就是把程序跑起来,跑通,后面的路还很长.这个过程中也是遇到了不少问题,刚开始拿到这个项目真是无处下手(没有看到有wiki),后来百度搜索了下找到四篇博文,大概就是OpenAtlas的作者写的吧 Android OpenAtlas初识 Android OpenAtlas之二 基本结构 OpenAtlas之