Android如何添加兼容包v7,android v7兼容包RecyclerView的使用(三)

前两篇文章 android v7兼容包RecyclerView的使用(二) android v7兼容包RecyclerView的使用(一) 介绍了RecyclerView的基本用法以及与它相关的重要的几个类,

前两篇文章

android v7兼容包RecyclerView的使用(二)

android v7兼容包RecyclerView的使用(一)

介绍了RecyclerView的基本用法以及与它相关的重要的几个类,本篇文章介绍布局管理器的具体用法。

为了演示布局管理器的使用,找了很多个例子,都没有找到感觉合适的例子,后来google了一把,发现了一个比较适合说明问题的例子。所以就拿该例子来解释吧。

在演示布局管理器前,我们先把UI部分搭建完成。由于使用到了V7兼容包的另一个包CardView,所以在这之前我们先把该项目导入eclipse,并设置为library,该项目目录在sdk\extras\android\support\v7\cardview

然后我们新建我们的项目将该库引入,之后将RecyclerView.jar加入到libs目录下,这样基本算配置完成了。开始编写代码。

item使用CardView,代码如下

===="5dp"

card_view:cardUseCompatPadding="true" >

android:layout_width="match_parent"

android:layout_height="match_parent" >

===>

创建适配器,代码前两篇文章已经讲解过了,这里不再讲解

package cn.edu.zafu.layoutmanager;

import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;

.String[] data;

public CardViewAdapter(String[] data) {

this.data = data;

}

@Override

public CardViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,

int viewType) {

//绑定布局

View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(

R.layout.item, null);

//创建ViewHolder

ViewHolder viewHolder = new ViewHolder(itemLayoutView);

return viewHolder;

}

(ViewHolder viewHolder, int position) {

//绑定数据

viewHolder.info.setText(data[position].toString());

}

() {

return data.length;

}

.ViewHolder {

public TextView info;

public ViewHolder(View itemLayoutView) {

super(itemLayoutView);

info = (TextView) itemLayoutView.findViewById(R.id.info_text);

}

}

}

在主布局文件中生声明RecyclerView

==="vertical" >

=>

在activity中使用,,这里先简单创建一个线性布局管理器。

package cn.edu.zafu.layoutmanager;

import android.app.Activity;

import android.os.Bundle;

import android.support.v7.widget.GridLayoutManager;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.support.v7.widget.RecyclerView.LayoutManager;

import android.support.v7.widget.StaggeredGridLayoutManager;

{

private RecyclerView mRecyclerView;

private RecyclerView.Adapter mAdapter;

(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

String[] data = { "StaggeredGridLayoutManager", "LayoutManager", "GridLayoutManager", "Adapter", "ViewHolder",

"LinearLayoutManager", "CardView", "ListView", "TextView",

"Vertical", "Horizontal", "RecyclerView" };

mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);

//如果布局大小一致有利于优化

mRecyclerView.setHasFixedSize(true);

//使用线性布局管理器

LayoutManager layout = new LinearLayoutManager(this);

mRecyclerView.setLayoutManager(layout);

//初始化适配器并绑定适配器

mAdapter = new CardViewAdapter(data);

mRecyclerView.setAdapter(mAdapter);

}

}

现在看一下运行效果。

1e8e2d05ec28fb79b6c6171acf2d6727.png

效果是不是还可以,基本上和ListView的效果一致。

好了,那么现在我们来修改一下代码,将关注点移动到布局管理器上。

先看LinearLayoutManager,该类有两个构造函数。

LinearLayoutManager(context)

LinearLayoutManager(context, orientation, reverseLayout)

第一个参数是Context,第二个参数是布局方向,其值可以取

LinearLayoutManager.HORIZONTAL 水平

LinearLayoutManager.VERTICAL

垂直

第三个参数是是否逆向布局如果设置为true,则反向开始布局,现在我们将布局设置为水平,并逆向布局,使用下面的代码

LayoutManager layout = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,true);

现在的效果是这样的。

c6f1a4abc0f5e212345e3e26545bfc11.gif

可以看出,所有的数据是从右向左布局的,这就是逆向布局。

此外,布局管理器里还有一些其他方法,请参见api文档。

用过了线性布局,我们再换一个布局,

LayoutManager layout=new GridLayoutManager(this,2);

网格布局,设置2列,默认垂直布局。效果图如下。

bb05827efe06bf968869f8b578d0ac22.png

将它改成3列

LayoutManager layout=new GridLayoutManager(this,3);

83c88f74fea12a3010c034e1341f5509.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值