Android进阶篇【chapter-10】 RecyclerView的使用与RecyclerView多类型视图的构造
来源:互联网 发布:淘宝分销一件代发 编辑:程序博客网 时间:2024/05/16 06:33
Android进阶篇【chapter-10】 RecyclerView的使用与RecyclerView多类型视图的构造
在Build.gradle中加compile ‘com.android.support:recyclerview-v7:23.0.0’
一;RecyClerView区别于ListView(布局文件的不同):
<android.support.v7.widget.RecyclerView xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android:id="@+id/activity_main_rv_news" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" ></android.support.v7.widget.RecyclerView >
二:RecyClerView需要一个LayoutMannager
private RecyclerView recyclerView ;//声明RecyclerView //需要在MainAcitivity中设置LayoutManager LinearLayoutManager manager = new LinearLayoutManager(this);//如果是在Fragment中this要写成getActivity(),获取依附在Activity的Fragment;StaggeredGridLayoutManager manager= new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager. VERTICAL); //为RecyclerView设置LayoutManager recyclerView .setLayoutManager(manager);
三:自定义适配器的不同
package com.example.yangjie.test;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import org.w3c.dom.Text;import java.util.ArrayList;/*** Created by Administrator on 2015/9/16.*/public class PeopleAdapter extends RecyclerView.Adapter<PeopleAdapter.ItemViewHolder>{ Context context ; ArrayList<Person> listpeople ; public PeopleAdapter(Context context, ArrayList<Person> listpeople) { this .context = context; this .listpeople = listpeople; } @Override public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view=LayoutInflater.from(context).inflate(R.layout. item_activity,viewGroup, false); return new ItemViewHolder(view); } @Override public void onBindViewHolder(ItemViewHolder itemViewHolder, int i) { itemViewHolder.nameview.setText(listpeople.get(i).getName()); itemViewHolder.phoneview.setText(listpeople.get(i).getPhonenumber()); } @Override public int getItemCount() { return listpeople.size(); } class ItemViewHolder extends RecyclerView.ViewHolder{ private TextView nameview; private TextView phoneview; public ItemViewHolder(View itemView) { super(itemView); nameview=(TextView)itemView.findViewById(R.id.item_activty_name); phoneview=(TextView)itemView.findViewById(R.id. item_activty_phonenumber); } }}
四:RecyclerView多类型不规则视图的列表
public class NewsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private ArrayList<News> newses = new ArrayList<>(); private Context context ; private LayoutInflater inflater ; private View headView ;//一般都是加的视图,常见都是图片,或者按钮 public NewsAdapter(Context context,View headView) { this .context = context; this .inflater = LayoutInflater.from(context); this .headView = headView; } public void addAll(ArrayList<News> newses){ this .newses .addAll(newses); notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {// return new ItemViewHolder(inflater.inflate(R.layout.item_news,viewGroup,false)); if (i == 1 ){ return new HeadViewHolder(headView); }else { return new ItemViewHolder(inflater.inflate(R.layout. item_news,viewGroup, false)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { if (i == 0 ){ }else { News news = newses.get(i-1); ItemViewHolder holder = (ItemViewHolder)viewHolder; holder.titleView.setText(news.getTitle()); holder.contentView.setText(news.getContent()); } } @Override public int getItemCount() { return newses.size()+ 1; } @Override public int getItemViewType(int position) { //列表默认返回值是0,所以把第一项的返回值设为1,其实可以是其他数字, if (position == 0 ){ return 1; }else { return 0; } } public class ItemViewHolder extends RecyclerView.ViewHolder{ TextView titleView,contentView; public ItemViewHolder(View itemView) { super(itemView); titleView = (TextView)itemView.findViewById(R.id. item_news_title); contentView = (TextView)itemView.findViewById(R.id.item_news_content ); } }public class HeadViewHolder extends RecyclerView.ViewHolder{ //同样要给加的视图写个ViewHolder public HeadViewHolder(View itemView) { super(itemView); } }}
五:RecyclerView和CardView连用(因为listview有个分割线而RecyclerView,所以RecyclerView 和CardView 连用)(工程picture)
CardView很简单,加在布局文件最外边就可以了
<android.support.v7.widget.CardView xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:app= "http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:cardBackgroundColor="#FF0000" app:cardCornerRadius="8dp" app:cardElevation="8dp" ></android.support.v7.widget.CardView>
六:RecyclerView和ListView向下滑动时候,最上面会弹出一个刷新的(可滑动的视图都可以)(工程picture)
在布局文件中:
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/activity_swipe" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android :id="@+id/activity_recyclerview" android :layout_width="match_parent" android :layout_height="match_parent" />//中间放可以滑动的视图,比如是listview或者recyrview,反正可滑动视图都可以</android.support.v4.widget.SwipeRefreshLayout >
//主Activity实现 implements SwipeRefreshLayout.OnRefreshListener接口,重写 onRefresh()方法
swipeRefreshLayout.setOnRefreshListener(this);并且在onRefresh()写监听的事件swipeRefreshLayout.setRefreshing(true );//刷新图标一直存在swipeRefreshLayout.setRefreshing(false );//刷新图标一直消失
0 0
- Android进阶篇【chapter-10】 RecyclerView的使用与RecyclerView多类型视图的构造
- 多类型的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的使用
- Android RecyclerView的使用
- Android RecyclerView 详解(五) RecyclerView多布局的使用
- [Android]RecyclerView的使用与深入分析
- Android中RecyclerView的使用与解析
- 王朝 第九周三角面积
- Linux有线网络链接
- uboot_配置过程
- 使用animate.css为你的网页添加动画
- Angular2 路由刷新404解决办法
- Android进阶篇【chapter-10】 RecyclerView的使用与RecyclerView多类型视图的构造
- Matlab 中的cell类型
- [goa]golang微服务框架学习(二)-- 代码自动生成
- 分数数列求和
- CSS基础02
- leetcode7: Reverse Integer
- WIKIOI 1001
- 欢迎使用CSDN-markdown编辑器
- 王朝 第九周 利润