zoukankan      html  css  js  c++  java
  • RecyclerView 小记

    RecyclerView,是在v7包加入的,一个灵活的view可以展示巨大的数据集,类似于listview的viewholder复用已经优化好了。

    语言是苍白的,代码是最生动的叙说:

    布局:

    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.main.MainActivity"
        android:padding="12dp"
        android:orientation="vertical">
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:overScrollMode="never"
            android:clipToPadding="false"/>
    
        <ProgressBar
            android:id="@+id/progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:visibility="gone"
            />
    
    </FrameLayout>
    

      

    adapter:

    package com.escorps.retrodagger.adapter;
    
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    import com.escorps.retrodagger.R;
    import com.escorps.retrodagger.models.PetModel;
    import java.util.List;
    import butterknife.ButterKnife;
    import butterknife.InjectView;
    
    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
    
        private List<PetModel> items;
    
        public void setItems(List<PetModel> items){
            this.items = items;
        }
    
        @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler, parent, false);
            return new ViewHolder(v);
        }
    
        @Override public void onBindViewHolder(final ViewHolder holder, int position) {
            final PetModel item = items.get(position);
    
            holder.textName.setText(item.getName());
    
            holder.itemView.setTag(item);
        }
    
        @Override public int getItemCount() {
            return items.size();
        }
    
        protected static class ViewHolder extends RecyclerView.ViewHolder {
    
            @InjectView(R.id.textName) TextView textName;
    
            public ViewHolder(View itemView) {
                super(itemView);
                
                ButterKnife.inject(this, itemView);
            }
        }
    
    }
    View Code

    注意在使用adapter之前: recyclerView.setLayoutManager(new GridLayoutManager(this, 1));

  • 相关阅读:
    BZOJ4644 经典傻逼题 (线段树分治+可撤销线性基+Xor)
    CF678E Another Sith Tournament(思维+dp)
    HDU 6511
    HDU6513 Reverse It(容斥+Cnk)
    一篇最浅显易懂的Splay讲解(试问谁能比我的更易懂
    [CTSC2016]时空旅行 (线段树分治+凸壳
    关于dsu on tree 和一些例题 CF 741 D
    关于区间开根号+区间询问
    [FJOI2015]火星商店问题 --线段树分治+可持久化trie
    线段树 关于pushup的技巧
  • 原文地址:https://www.cnblogs.com/spring87/p/4458700.html
Copyright © 2011-2022 走看看