RecyclerView的基本使用

简介: 1、布局文件中使用 1 8   2、代码中使用 1 recyclerView = (RecyclerView)findViewById(R.id.recycleview); 2 recyclerView.
1、布局文件中使用
1  <android.support.v7.widget.RecyclerView
2         android:id="@+id/recycleview"
3         android:paddingLeft="10dp"
4         android:paddingRight="10dp"
5         android:layout_width="match_parent"
6         android:layout_height="match_parent"
7         android:gravity="center">
8     </android.support.v7.widget.RecyclerView>

 

2、代码中使用

1   recyclerView = (RecyclerView)findViewById(R.id.recycleview);
2   recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 4)) ;   //gridView网格布局
3   recyclerView.setLayoutManager(new LinearLayoutManager(this));              //listView线性布局

 

3、适配器

  1 package com.yiba.files.adapter;
  2 
  3 import android.content.Context;
  4 import android.graphics.drawable.BitmapDrawable;
  5 import android.support.v7.widget.RecyclerView;
  6 import android.view.LayoutInflater;
  7 import android.view.View;
  8 import android.view.ViewGroup;
  9 import android.widget.ImageView;
 10 import android.widget.RelativeLayout;
 11 import android.widget.TextView;
 12 
 13 import com.yiba.files.R;
 14 import com.yiba.files.model.DataItem;
 15 import com.yiba.files.util.DensityUtils;
 16 import com.yiba.files.util.DeviceUtils;
 17 
 18 import java.util.List;
 19 
 20 /**
 21  * Created by ${zyj} on 2016/1/23.
 22  */
 23 public class AppAdapter extends RecyclerView.Adapter<AppAdapter.MyViewHolder> {
 24     private Context context;
 25     private List<DataItem> list;
 26     private RelativeLayout.LayoutParams params;
 27 
 28     public interface OnItemClickListener {
 29         void onItemClick(View view, int position);
 30     }
 31 
 32     private OnItemClickListener onItemClickListener;
 33 
 34     public void setOnItemClickListener(OnItemClickListener listener) {
 35         onItemClickListener = listener;
 36     }
 37 
 38     public AppAdapter(Context context, List<DataItem> list) {
 39         this.context = context;
 40         this.list = list;
 41     }
 42 
 43     @Override
 44     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 45         MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(
 46                 R.layout.fragment_app_item, null));
 47         return holder;
 48     }
 49 
 50     @Override
 51     public void onBindViewHolder(final MyViewHolder holder,
 52                                  final int position) {
 53         DataItem info = list.get(position);
 54         String tag = (String) holder.imageView.getTag();
 55 
 56         if (!info.getName().equals(tag)) {
 57             holder.imageView.setImageBitmap(((BitmapDrawable) list.get(position)
 58                     .getImage()).getBitmap());
 59             holder.imageView.setTag(info.getName());
 60         }
 61 
 62         if (info.isSelect()) {
 63             holder.imageView.setAlpha(0.3f);
 64             holder.appName.setAlpha(0.3f);
 65             holder.appSize.setAlpha(0.3f);
 66             holder.app_choice.setVisibility(View.VISIBLE);
 67         } else {
 68             holder.imageView.setAlpha(1.0f);
 69             holder.appName.setAlpha(1.0f);
 70             holder.appSize.setAlpha(1.0f);
 71             holder.app_choice.setVisibility(View.GONE);
 72         }
 73 
 74         holder.appName.setText(info.getDisplayName());
 75         holder.appSize.setText("" + DeviceUtils.convertByte(info.getSize()));
 76 
 77         holder.itemView.setOnClickListener(new View.OnClickListener() {
 78             @Override
 79             public void onClick(View v) {
 80                 if (onItemClickListener != null) {
 81                     int pos = holder.getLayoutPosition();
 82                     onItemClickListener.onItemClick(holder.itemView, pos);
 83                 }
 84             }
 85         });
 86     }
 87 
 88     @Override
 89     public int getItemCount() {
 90         if (list != null) {
 91             return list.size();
 92         } else {
 93             return 0;
 94         }
 95     }
 96 
 97     public DataItem getItem(int position) {
 98         return list.get(position);
 99     }
100 
101     class MyViewHolder extends RecyclerView.ViewHolder {
102         ImageView imageView;
103         ImageView app_choice;
104         TextView appName;
105         TextView appSize;
106 
107         public MyViewHolder(View view) {
108             super(view);
109             imageView = (ImageView) view.findViewById(R.id.appImage);
110 
111             params = (RelativeLayout.LayoutParams) imageView.getLayoutParams();
112             params.width = DensityUtils.getScreenWidth(context) / 6;
113             params.height = params.width;
114             imageView.setLayoutParams(params);
115 
116             appName = (TextView) view.findViewById(R.id.appName);
117             appSize = (TextView) view.findViewById(R.id.appSize);
118             app_choice = (ImageView) view.findViewById(R.id.appSelect_image);
119         }
120     }
121 }

 

更新数据

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html

 

相关文章
|
前端开发 JavaScript
electron ui框架
Electron是一个使用JavaScript, HTML和CSS等前端技术构建跨平台桌面应用程序的框架。
656 0
|
11月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
588 3
|
机器学习/深度学习 安全 算法
【网络安全】隐私计算迎来千亿级风口,一文讲清它的技术理论基础。
【网络安全】隐私计算迎来千亿级风口,一文讲清它的技术理论基础。
216 0
|
消息中间件 应用服务中间件 Linux
ngixn、fpm开机自启动,使用composer安装laravel5.8
ngixn、fpm开机自启动,使用composer安装laravel5.8
222 0
ngixn、fpm开机自启动,使用composer安装laravel5.8
|
2天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
336 90
|
10天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。