android RecyclerView的简单用法

最近在研究listview的横向展示数据。竖向展示数据,这个不用说估计大家都懂。那么首先展示一下我的演示界面。
这里写图片描述

在这里,我使用的是RecyclerView+CardView这两者结合。展示出卡片式风格的界面。那么接下来就是RecyclerView的简单使用步骤。

  • 添加RecyclerView和CardView的关联库

    compile ‘com.android.support:recyclerview-v7:24.0.0’
    compile ‘com.android.support:cardview-v7:24.0.0’

这里写图片描述

  • 在xml布局里面进行引用

在主布局里面的xml,引用RecyclerView。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    android:orientation="vertical"
    tools:context="com.example.administrator.listviewdemo1.MainActivity">

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

在RecyclerVew.Adapter的xml里面引用

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            />
        <ImageView
            android:id="@+id/img"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:layout_marginLeft="10dp"/>
    </LinearLayout>
</android.support.v7.widget.CardView>
  • mainactivity的主要代码
package com.example.administrator.listviewdemo1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.example.administrator.listviewdemo1.adapter.ListViewAdapter;

import java.util.ArrayList;

import butterknife.ButterKnife;
import butterknife.InjectView;

public class MainActivity extends AppCompatActivity {

    @InjectView(R.id.lv)
    RecyclerView lv;
    private ArrayList<String> titles = new ArrayList<String>();
    private int[] imgs = {R.drawable.list_one,R.drawable.list_two,R.drawable.list_three,R.drawable.list_four,
            R.drawable.list_five,R.drawable.list_six,R.drawable.list_seven,R.drawable.list_eight,
            R.drawable.list_nine,R.drawable.list_ten};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.inject(this);

        initView();
    }
    private void initView() {
        for (int i = 0;i<10;i++){
            titles.add("第"+i+"张图片");
        }
        // 不改变的recyclerview布局尺寸
        lv.setHasFixedSize(true);
        // 使用垂直线性布局管理器
        LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
        mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        lv.setLayoutManager(mLayoutManager);

        ListViewAdapter adapter = new ListViewAdapter(this,titles,imgs);
        lv.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }
}
  • ListViewAdapter的代码内容如下
package com.example.administrator.listviewdemo1.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.administrator.listviewdemo1.R;

import java.util.ArrayList;

/**
 * Created by Administrator on 2016/7/15.
 */
public class ListViewAdapter extends RecyclerView.Adapter<ListViewAdapter.ViewHolder>{
    private Context mContext;
    private ArrayList<String> mDatas;
    private int[] mIms;
    public ListViewAdapter(Context context,ArrayList<String> data,int[] img){
        this.mContext = context;
        this.mDatas = data;
        this.mIms = img;
    }
    /**
     * 相当于BaseAdapter的ViewHolder
     */
    public static class ViewHolder extends RecyclerView.ViewHolder{
        TextView tv;
        ImageView img;
        public ViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.title);
            img = (ImageView) itemView.findViewById(R.id.img);
        }
    }

    /**
     * 相当于getView()
     * @param parent
     * @param viewType
     * @return
     */
    @Override
    public ListViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.list_adapter,null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    /**
     * 在这里进行控件的赋值
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(ListViewAdapter.ViewHolder holder, final int position) {
        holder.img.setImageResource(mIms[position]);
        holder.tv.setText(mDatas.get(position));
        //设置监听
        holder.img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(mContext,position+"个",Toast.LENGTH_SHORT).show();
            }
        });
    }

    /**
     * 相当于BaseAdapter的getItemCount()
     * @return
     */
    @Override
    public int getItemCount() {

        return mDatas.size();
    }
}

以上就是RecyclerView的简单用法,

猜你喜欢

转载自blog.csdn.net/huangf321123/article/details/51918852
今日推荐