• 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));

  • 相关阅读:
    adb 连接 Android 手机的两种方式
    Jmeter GUI及NON GUI下实现分布式
    史上最全最细 App 自动化环境部署
    不懂Java代码,照样把jmeter指定数据写入execl
    Dockerfile 让你轻松创建属于你的镜像 (下)
    Dockerfile 让你轻轻松松创建属于你的镜像 (上)
    Python vs Java (一):史上最全变量类型区别,99.99%的人都收藏了
    浏览器F12调试器定位系统前后端bug
    cookie,session
    App 抓包提示网络异常怎么破?(抓包HTTPS)
  • 原文地址:https://www.cnblogs.com/spring87/p/4458700.html
Copyright © 2020-2023  润新知