`

RecyclerView入门

 
阅读更多

android studio 1.2.1.1

 

首先配置下v7的库

dependencies {
    compile 'com.android.support:recyclerview-v7:22.2.0'
}
public class RecyclerViewActivity extends Activity {

    private RecyclerView recycler;
    private RecyclerView.LayoutManager mLayoutManager;

    private List<HashMap<String,Object>> data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.recyclerview);
        recycler = (RecyclerView) findViewById(R.id.recycler);

        //创建一个布局管理器
        mLayoutManager = new LinearLayoutManager(this);
        //设置布局管理器
        recycler.setLayoutManager(mLayoutManager);

        data = new ArrayList<>();

        //初始化数据
        for(int i = 0 ; i < 60 ;i++){
            HashMap<String,Object> hashMap = new HashMap<>();
            if(i%3 == 0){
                hashMap.put("imageView",R.drawable.logo_wechat);
            }else if(i%3 == 1){
                hashMap.put("imageView",R.drawable.logo_twitter);
            }else if(i%3 == 2){
                hashMap.put("imageView",R.drawable.logo_whatsapp);
            }
            hashMap.put("textView","第" + i + "个");
            data.add(hashMap);
        }

        //设置Adapter
        recycler.setAdapter(new MyAdapter(data));
    }

    class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{

        private List<HashMap<String,Object>> datas;
        private View view;
        public MyAdapter(List<HashMap<String,Object>> datas){
            this.datas = datas;
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            //初始化布局
            view = LayoutInflater.from(RecyclerViewActivity.this).inflate(R.layout.recycle_item,null);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder vh, int i) {
            // 绑定数据到ViewHolder上
            HashMap<String,Object> hashMap = datas.get(i);
            vh.imageView.setImageResource(Integer.valueOf(hashMap.get("imageView").toString()));
            vh.textView.setText(hashMap.get("textView").toString());
        }

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

        //实现ViewHolder与view分离
        class ViewHolder extends RecyclerView.ViewHolder{
            ImageView imageView;
            TextView textView;

            public ViewHolder(View itemView) {
                super(itemView);
                imageView = (ImageView) itemView.findViewById(R.id.imageView);
                textView = (TextView) itemView.findViewById(R.id.textView);
            }
        }
    }
}
 
activity布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

item布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"/>
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>
</LinearLayout>
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics