android学习之RecyclerView的简单使用
来源:互联网 发布:淘宝差评师怎么找 编辑:程序博客网 时间:2024/06/05 09:20
用一个来自于《第一行代码》的简单例子说明:
Fruit.java
package com.example.luobo.recyclerviewtest;public class Fruit { private String name; private int imageId; public Fruit(String name,int imageId){ this.name = name; this.imageId = imageId; } public String getName(){ return name; } public int getImageId(){ return imageId; }}
FruitAdapter.java
package com.example.luobo.recyclerviewtest;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import java.util.List;public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> { private List<Fruit> mFruitList; static class ViewHolder extends RecyclerView.ViewHolder{ ImageView fruitImage; TextView fruitName; View fruitView; public ViewHolder(View view){ super(view); fruitView = view; fruitImage = (ImageView)view.findViewById(R.id.fruit_image); fruitName = (TextView)view.findViewById(R.id.fruit_name); } } public FruitAdapter(List<Fruit> fruitList){ mFruitList = fruitList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false); final ViewHolder viewHolder = new ViewHolder(view); viewHolder.fruitView.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { int position = viewHolder.getAdapterPosition(); Fruit fruit = mFruitList.get(position); Toast.makeText(view.getContext(),"You clicked view: "+fruit.getName(),Toast.LENGTH_SHORT).show(); } }); viewHolder.fruitImage.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { int position = viewHolder.getAdapterPosition(); Fruit fruit = mFruitList.get(position); Toast.makeText(view.getContext(),"You clicked image: "+fruit.getName(),Toast.LENGTH_SHORT).show(); } }); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Fruit fruit = mFruitList.get(position); holder.fruitImage.setImageResource(fruit.getImageId()); holder.fruitName.setText(fruit.getName()); } @Override public int getItemCount() { return mFruitList.size(); }}
RecyclerViewActivity.java
package com.example.luobo.recyclerviewtest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import java.util.ArrayList;import java.util.List;import java.util.Random;public class RecyclerViewActivity extends AppCompatActivity { private String[] data = {"Apple","Banana","Orange","Watermelon","Pear","Grape","Pinapple", "Strawberry","Cherry","Mango","Apple","Banana","Orange","Watermelon","Pear","Grape", "Pinapple", "Strawberry","Cherry","Mango"}; private List<Fruit> fruitList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler_view); initFruits(); RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view_test);// LinearLayoutManager layoutManager = new LinearLayoutManager(this);// layoutManager.setOrientation(LinearLayoutManager.VERTICAL); StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); FruitAdapter adapter = new FruitAdapter(fruitList); recyclerView.setAdapter(adapter); } public void initFruits(){ for (int i = 0;i<2;i++ ) { for (int j = 0 ; j < data.length ; j++) { Fruit object = new Fruit(getRandomLengthName(data[j]),R.drawable.image2); fruitList.add(object); } } } private String getRandomLengthName(String name){ Random random = new Random(); int length = random.nextInt(20)+1; StringBuilder builder = new StringBuilder(); for (int i = 0;i < length;i++){ builder.append(name); } return builder.toString(); }}
activity_recyler.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"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler_view_test"> </android.support.v7.widget.RecyclerView></LinearLayout>
fruit_item.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="wrap_content" android:layout_margin="5dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/fruit_image" android:layout_gravity="center_horizontal"/> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:layout_marginTop="10dp"/></LinearLayout>
在app文件夹下的build.grandle中的dependencies添加外部支持
compile 'com.android.support:recyclerview-v7:26.+'//最新版本就行
阅读全文
0 0
- android学习之RecyclerView的简单使用
- Android RecyclerView 的简单使用
- android RecyclerView的简单使用
- Android RecyclerView 的简单使用
- Android新特性之RecyclerView的简单使用
- Android新特性之RecyclerView的简单使用
- Android之RecyclerView简单使用(一)
- Android之RecyclerView简单使用(二)
- Android之RecyclerView简单使用(三)
- Android之RecyclerView简单使用(完结篇)
- Android RecyclerView的使用学习
- Android学习--RecyclerView的使用
- Android学习之路------RecyclerView的使用(1)
- Android RecyclerView简单使用
- android recyclerView简单使用
- Android之RecyclerView控件的简单运用
- 简单的Android RecyclerView 使用小Demo
- Android常用控件--RecyclerView的简单使用
- Ubuntu 12.04 or 14.04 下USB存储设备自动挂载和自动打开功能的开启和关闭
- CASE WHEN 及 SELECT CASE WHEN的用法
- ListVIew子项布局右对齐,TextVIew右对齐
- Linux 系统安装与软件配置相关
- 解决cv2.findContours返回值too many values to unpack (expected 2)的问题
- android学习之RecyclerView的简单使用
- elasticsearchException:Failed to load logging configuration Caused by: java.nio.file.NoSuchFileExcep
- ByteBuffer用法小结
- Machine Learning Basics(要点)
- 老鼠偷奶酪 题解
- socket阻塞与非阻塞,同步与异步
- 汉诺塔递归算法 (思路+python实现)
- 数据库事务隔离级别
- 關於單例模式的理解