关闭

android recycleview使用

标签: android布局控件
576人阅读 评论(0) 收藏 举报
分类:

android recycleview使用

RecyclerView是一个比ListView更灵活的一个控件,以后可以直接抛弃ListView了

Item 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/recycler_view_test_item_person_view"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:padding="15dp"
          android:background="#aabbcc"
    >
<TextView
        android:id="@+id/recycler_view_test_item_person_name_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:background="#ccbbaa"
        />
<TextView
        android:id="@+id/recycler_view_test_item_person_age_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:background="#aaccbb"
        android:textSize="15sp"
        />
</LinearLayout>

activity 布局

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

activity关键代码

recyclerView.setHasFixedSize(true);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context);
    recyclerView.setLayoutManager(layoutManager);

    initData();
    adapter = new PersonAdapter(personList);
    adapter.setOnRecyclerViewListener(this);
    recyclerView.setAdapter(adapter);

    这里有个layoutmanager的概念
    也是不同于listview gridview的地方
    可以轻松使用以上的效果 还能实现瀑布流

adapter

package com.wangjie.helloandroid.sample.recycler.person;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.wangjie.androidbucket.log.Logger;
import com.wangjie.helloandroid.R;

import java.util.List;


public class PersonAdapter extends RecyclerView.Adapter {
public static interface OnRecyclerViewListener {
    void onItemClick(int position);
    boolean onItemLongClick(int position);
}

private OnRecyclerViewListener onRecyclerViewListener;

public void setOnRecyclerViewListener(OnRecyclerViewListener onRecyclerViewListener) {
    this.onRecyclerViewListener = onRecyclerViewListener;
}

private static final String TAG = PersonAdapter.class.getSimpleName();
private List<Person> list;

public PersonAdapter(List<Person> list) {
    this.list = list;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    Logger.d(TAG, "onCreateViewHolder, i: " + i);
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recycler_view_test_item_person, null);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    view.setLayoutParams(lp);
    return new PersonViewHolder(view);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
    Logger.d(TAG, "onBindViewHolder, i: " + i + ", viewHolder: " + viewHolder);
    PersonViewHolder holder = (PersonViewHolder) viewHolder;
    holder.position = i;
    Person person = list.get(i);
    holder.nameTv.setText(person.getName());
    holder.ageTv.setText(person.getAge() + "岁");
}

@Override
public int getItemCount() {
    return list.size();
}

class PersonViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener
{
    public View rootView;
    public TextView nameTv;
    public TextView ageTv;
    public int position;

    public PersonViewHolder(View itemView) {
        super(itemView);
        nameTv = (TextView) itemView.findViewById(R.id.recycler_view_test_item_person_name_tv);
        ageTv = (TextView) itemView.findViewById(R.id.recycler_view_test_item_person_age_tv);
        rootView = itemView.findViewById(R.id.recycler_view_test_item_person_view);
        rootView.setOnClickListener(this);
        rootView.setOnLongClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (null != onRecyclerViewListener) {
            onRecyclerViewListener.onItemClick(position);
        }
    }

    @Override
    public boolean onLongClick(View v) {
        if(null != onRecyclerViewListener){
            return onRecyclerViewListener.onItemLongClick(position);
        }
        return false;
    }
}

}
0
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android开发之RecyclerView的使用全解

转自 http://blog.csdn.net/dmk877/article/details/50816933 自Android 5.0之后,谷歌公司推出了RecylerView控件,...
  • skykingf
  • skykingf
  • 2016-03-08 14:50
  • 105545

Android 开发之RecycleView的简单使用

简介: RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用...
  • u011546655
  • u011546655
  • 2015-07-29 17:38
  • 2825

RecyclerView的基本使用方法

1.RecyclerView的使用方法(使用的Android Studio开发) 首先是recyclerview的配置问题,recyclerview是要导入android.support.v7.wi...
  • Javacainiao931121
  • Javacainiao931121
  • 2016-06-18 09:26
  • 12286

Android 使用RecycleView打造自定义日历

  • 2017-06-23 18:38
  • 11.47MB
  • 下载

Android进阶——RecycleView的使用之自定义单选列表(二)

实现单选列表:单击勾选同时动态获取设备的状态显示并获得对应的时间值,再次单击取消勾选,长按删除,单击自定义时弹出自定义对话框,选择时间之后显示到列表上
  • CrazyMo_
  • CrazyMo_
  • 2016-10-07 00:20
  • 2730

Android中关于RecycleView的使用,代替ListView,可以提高效率

我们平时在Android的开发当中,用得最多的应该是ListView了,但是,在Android5.0以后,Google推出了RecycleView这个类。这个类在平时的开发当中,可以显著地提高我们的效...
  • li12412414
  • li12412414
  • 2016-07-15 16:09
  • 1001

android RecycleView的使用

1、说明这个空间可以说是升级版的ListView,支持不同的排列,还支持动画。2、关于这个控件需要掌握的一下几点1:实现自定义布局; 2:实现增加和删除; 3:实现控件的点击; 4:实现动画效果...
  • u013869488
  • u013869488
  • 2016-06-06 20:08
  • 590

Android - RecycleView 使用 Universal-Image-Loader加载优化

RecycleView, PauseOnScrollListener, Universal-Image-Loader ,OnScrolllistener
  • LABLENET
  • LABLENET
  • 2015-10-28 10:17
  • 3367

android的RecycleView的基本使用和item间隔问题

昨天使用了RecycleView + CardView的组合进行列表的设计 却花了一个晚上的时间来调试,RecyclView实现需要: 1.封装一个自定义的Item数据类 2.需要用Arra...
  • u013113491
  • u013113491
  • 2015-04-14 19:14
  • 12357

Android 使用RecycleView打造自定义日历

1 大致思路 1) 初始化日历数据,作为list传入到RecyclerView.Adapter 2) 重写RecyclerView的onTouchEvent方法,监听手势的改变,然后更改li...
  • u012521570
  • u012521570
  • 2017-06-23 18:33
  • 556
    个人资料
    • 访问:59813次
    • 积分:2038
    • 等级:
    • 排名:千里之外
    • 原创:140篇
    • 转载:2篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论