RecyclerView灵活使用

compile 'com.squareup.okio:okio:1.5.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.youth.banner:banner:1.4.9'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
compile files('libs/universal-image-loader-1.9.3.jar')

Myapp

public static MyApp mInstance;
@Override
public void onCreate() {
    super.onCreate();


    mInstance = this;
    ImageLoaderConfiguration defaultcof = ImageLoaderConfiguration.createDefault(getApplicationContext());
    ImageLoader.getInstance().init(defaultcof);
}
public static MyApp getInstance() {
    return mInstance;
}

权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />

XRecycler上拉下拉

<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:layout_width="match_parent"
    android:id="@+id/xrecycler"
    android:layout_height="match_parent">
</com.jcodecraeer.xrecyclerview.XRecyclerView>


xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
    @Override
    public void onRefresh() {
        Toast.makeText(getActivity(),"已刷新",Toast.LENGTH_SHORT).show();
        xRecyclerView.refreshComplete();
    }

    @Override
    public void onLoadMore() {
        Toast.makeText(getActivity(),"已加载更多",Toast.LENGTH_SHORT).show();
        xRecyclerView.refreshComplete();
    }
});

XRecyclerView包含recyclerView和Banner的适配器

public class MyXRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    ArrayList<SuperClass.NewslistBean> list;
    Context context;
    RecyclerAdapter adapter;
    ArrayList mlist;

    public MyXRecyclerAdapter(ArrayList<SuperClass.NewslistBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        MViewHolder viewHolder = new MViewHolder(LayoutInflater.from(context).inflate(R.layout.item_xrecycler,null));


        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

        mlist =new ArrayList();

        for(int i=0; i<list.size();i++){

            mlist.add(list.get(i).getPicUrl());

        }

        ((MViewHolder)holder).mbanner.setImageLoader(new GlideImaGlideImageLoadergeLoader());
        ((MViewHolder)holder).mbanner.setImages(mlist);
        ((MViewHolder)holder).mbanner.start();

        ((MViewHolder) holder).recyclerView.setLayoutManager(new LinearLayoutManager(context));


        adapter = new RecyclerAdapter(context,list);
        ((MViewHolder) holder).recyclerView.setAdapter(adapter);
//点击事件
        adapter.setOnItemClickLitener(new RecyclerAdapter.OnItemClickLitener() {

            @Override
            public void onItemClick(View view, int position)
            {
                Toast.makeText(context, position + " click",
                        Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(context,ShowActivity.class);
                context.startActivity(intent);
            }

            @Override
            public void onItemLongClick(View view, int position)
            {
                Toast.makeText(context, position + " long click",
                        Toast.LENGTH_SHORT).show();

            }
        });



    }

    @Override
    public int getItemCount() {
        return 1;
    }

    class MViewHolder extends RecyclerView.ViewHolder{

        Banner mbanner;
        RecyclerView recyclerView;

        public MViewHolder(View itemView) {
            super(itemView);
            mbanner = (Banner) itemView.findViewById(R.id.mybanner);
            recyclerView = (RecyclerView) itemView.findViewById(R.id.item_recycler);

        }
    }



}

recyclerview多条目加载加点击接口

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    Context context;
    ArrayList<SuperClass.NewslistBean> list;

    public RecyclerAdapter(Context context, ArrayList<SuperClass.NewslistBean> list) {
        this.context = context;
        this.list = list;
    }

    private enum Type{
        Type_one,Type_two
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        if(viewType == Type.Type_one.ordinal()){
            View view = LayoutInflater.from(context).inflate(R.layout.item_recyclera,null);
            MyViewHolderA viewHolder = new MyViewHolderA(view);
            return viewHolder;
        }else if(viewType == Type.Type_two.ordinal()){
            View view = LayoutInflater.from(context).inflate(R.layout.item_recyclerb,null);
            MyViewHolderB viewHolder = new MyViewHolderB(view);
            return viewHolder;
        }

        return null;
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
        if(holder instanceof MyViewHolderA){
            ((MyViewHolderA) holder).texta.setText(list.get(position).getTitle());
        }else if(holder instanceof MyViewHolderB){

            String bitUrl = list.get(position).getPicUrl();
            ImageLoader loader = ImageLoader.getInstance();
            loader.displayImage(bitUrl,((MyViewHolderB) holder).head);
            ((MyViewHolderB) holder).textb.setText(list.get(position).getTitle());
        }

        if (mOnItemClickLitener != null)
        {
            holder.itemView.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    int pos = holder.getLayoutPosition();
                    mOnItemClickLitener.onItemClick(holder.itemView, pos);
                }
            });

            holder.itemView.setOnLongClickListener(new View.OnLongClickListener()
            {
                @Override
                public boolean onLongClick(View v)
                {
                    int pos = holder.getLayoutPosition();
                    mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
                    return false;
                }
            });
        }


    }

    @Override
    public int getItemViewType(int position) {

        if(position==0){
            return Type.Type_one.ordinal();
        }else if(position==1){
            return Type.Type_one.ordinal();
        }else if(position==2){
            return Type.Type_one.ordinal();
        }else{
            return Type.Type_two.ordinal();
        }

    }

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


    class MyViewHolderA extends RecyclerView.ViewHolder{

        TextView texta;

        public MyViewHolderA(View itemView) {
            super(itemView);
            texta = (TextView) itemView.findViewById(R.id.recyclera_text);
        }
    }


    class MyViewHolderB extends RecyclerView.ViewHolder{
        TextView textb;
        ImageView head;
        public MyViewHolderB(View itemView) {
            super(itemView);
            textb = (TextView) itemView.findViewById(R.id.recyclerb_text);
            head = (ImageView) itemView.findViewById(R.id.recyclerb_head);
        }
    }


    public interface OnItemClickLitener
    {
        void onItemClick(View view, int position);
        void onItemLongClick(View view , int position);
    }

    private OnItemClickLitener mOnItemClickLitener;

    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)
    {
        this.mOnItemClickLitener = mOnItemClickLitener;
    }


}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值