Recyclerview的简单使用

来源:互联网 发布:d3.js 可视化介绍 编辑:程序博客网 时间:2024/05/22 08:50
package com.example.administrator.recycleview_demo;

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 android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private List<String>list_data=new ArrayList<>();
    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //数据源
        for (int i = 0; i < 20; i++) {
            list_data.add("条目:" + i);
        }
        recyclerView = (RecyclerView) findViewById(R.id.e_view);
        //布局管理者
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        //设置适配器
        Myadapter adapter=new Myadapter(this,list_data);
        recyclerView.setAdapter(adapter);
        adapter.setOnItemClickListener(new Myadapter.OnItemClickListener() {
            @Override
            public void onIntem(View view, int position) {
                Toast.makeText(MainActivity.this, "点击了"+position, Toast.LENGTH_SHORT).show();
            }
        });
        adapter.setItemLongClikListener(new Myadapter.OnItemLongClikListener() {
            @Override
            public void onLongItem(View view, int position) {
                Toast.makeText(MainActivity.this, "长按"+position, Toast.LENGTH_SHORT).show();
            }
        });
    }
}


package com.example.administrator.recycleview_demo;

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

import java.util.List;

/**
 * Created by Administrator on 2017/4/13.
 */
public class Myadapter extends RecyclerView.Adapter<Myadapter.ViewHolder> {
    Context context;
    List<String> list_data;
    private OnItemClickListener itemClickListener;
    private OnItemLongClikListener ItemLongClikListener;

    public interface OnItemClickListener{
        void onIntem(View view,int position);
    }
    public interface OnItemLongClikListener{
        void onLongItem(View view,int position);
    }
    public void setOnItemClickListener(OnItemClickListener itemClickListener){
        this.itemClickListener=itemClickListener;
    }
    public void setItemLongClikListener(OnItemLongClikListener ItemLongClikListener){
        this.ItemLongClikListener=ItemLongClikListener;
    }
    public Myadapter(Context context, List<String> list_data) {
        this.context=context;
        this.list_data=list_data;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.item, null);
        final ViewHolder holder=new ViewHolder(view);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //拿到需要回调的position
                int position = holder.getLayoutPosition();
                if(itemClickListener!=null){
                    itemClickListener.onIntem(v,position);
                }
            }
        });
        view.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                int position = holder.getLayoutPosition();
                if(ItemLongClikListener!=null){
                    ItemLongClikListener.onLongItem(v,position);
                }
                return true;
            }
        });
        return holder;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.text_title.setText(list_data.get(position));
    }
    @Override
    public int getItemCount() {
        return list_data.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder{

        private final TextView text_title;

        public ViewHolder(View itemView) {
            super(itemView);
            text_title = (TextView) itemView.findViewById(R.id.tv_title);
        }
    }
}

//实现多条目展示

public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    Context context;
    List<String> list_j;
    private final LayoutInflater layoutInflater;
    //建立枚举 2个item 类型
    public enum ITEM_TYPE {
        ITEM1,
        ITEM2
    }
    public Myadapter(Context context, List<String> list_j) {
        this.context=context;
        this.list_j=list_j;
        layoutInflater = LayoutInflater.from(context);
    }
    @Override
    public int getItemViewType(int position) {
        //Enum类提供了一个ordinal()方法,返回枚举类型的序数,这里ITEM_TYPE.ITEM1.ordinal()代表0, ITEM_TYPE.ITEM2.ordinal()代表1
        return position % 3 == 0 ? ITEM_TYPE.ITEM1.ordinal() : ITEM_TYPE.ITEM2.ordinal();
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//加载Item View的时候根据不同TYPE加载不同的布局
        if (viewType == ITEM_TYPE.ITEM1.ordinal()) {
            return new Item1ViewHolder(layoutInflater.inflate(R.layout.r_layout, parent, false));
        } else {
            return new Item2ViewHolder(layoutInflater.inflate(R.layout.r_layout2, parent, false));
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        if (holder instanceof Item1ViewHolder) {
            ((Item1ViewHolder) holder).mTextView.setText(list_j.get(position));

            ((Item1ViewHolder) holder).mTextView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "这是"+position, Toast.LENGTH_SHORT).show();
                }
            });
        } else if (holder instanceof Item2ViewHolder) {
            ((Item2ViewHolder) holder).mTextView.setText(list_j.get(position));
            ((Item2ViewHolder) holder).mTextView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "这是"+position, Toast.LENGTH_SHORT).show();

                }
            });
        }
    }
    @Override
    public int getItemCount() {
        return list_j == null ? 0 : list_j.size();
    }

    //item1 的ViewHolder
    public static class Item1ViewHolder extends RecyclerView.ViewHolder{
        TextView mTextView;
        public Item1ViewHolder(View itemView) {
            super(itemView);
            mTextView=(TextView)itemView.findViewById(R.id.text_name);
        }
    }
    //item2 的ViewHolder
    public static class Item2ViewHolder extends RecyclerView.ViewHolder{

        TextView mTextView;
        public Item2ViewHolder(View itemView) {
            super(itemView);
            mTextView=(TextView)itemView.findViewById(R.id.text_name_2);
        }
    }
}


0 1