android recycleview使用

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;
    }
}

}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014631944/article/details/51558538
文章标签: android 布局 控件
个人分类: android
想对作者说点什么? 我来说一句

demo_recycleView

2017年01月23日 26.47MB 下载

recycleview仿网易频道管理

2017年05月12日 29.44MB 下载

XRecycleView

2016年01月20日 6.2MB 下载

android_util

2017年10月16日 59.9MB 下载

没有更多推荐了,返回首页

不良信息举报

android recycleview使用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭