recyclerview多条目

package com.example.xiangmu1.zk3demo;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 com.example.xiangmu1.zk3demo.bean.News;
import com.google.gson.Gson;

import java.io.IOException;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

    private RecyclerView main_rv;
    private String url = "http://365jia.cn/news/api3/365jia/news/headline?page=1";
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 1) {
                String s = (String) msg.obj;
                Gson gson = new Gson();
                News news = gson.fromJson(s, News.class);
                data = news.getData().getData();
                rvAdapter = new RvAdapter(MainActivity.this, data);
                main_rv.setAdapter(rvAdapter);
                main_rv.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false));

                rvAdapter.setOnItemClickListener(new RvAdapter.OnItemClickListener() {
                    @Override
                    public void imageClick(View v) {
//                        v.setVisibility(View.INVISIBLE);
                        ObjectAnimator animator = ObjectAnimator.ofFloat(v, "alpha", new float[]{1f, 0});
                        animator.setDuration(3000);
                        animator.setRepeatMode(ValueAnimator.REVERSE);
                        animator.setRepeatCount(1);
                        animator.start();
                    }

                    @Override
                    public void removeItem(final int position) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                        builder.setTitle("删除");
                        builder.setMessage("是否删除?");
                        builder.setPositiveButton("", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                data.remove(position);
                                rvAdapter.notifyDataSetChanged();
                            }
                        });
                        builder.setNegativeButton("", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this,"取消了",Toast.LENGTH_SHORT).show();
                            }
                        });
                        AlertDialog alertDialog = builder.create();
                        alertDialog.show();
                    }
                });
            }
        }
    };
    private RvAdapter rvAdapter;
    private List<News.DataBeanX.DataBean> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        requestNetData();

    }

    private void requestNetData() {
        OkHttpClient client = new OkHttpClient.Builder().build();
        Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Toast.makeText(MainActivity.this, "网络数据请求失败", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String s = response.body().string();
                Message message = Message.obtain();
                message.what = 1;
                message.obj = s;
                handler.sendMessage(message);
            }
        });
    }

    private void initView() {
        main_rv = (RecyclerView) findViewById(R.id.main_rv);
    }

}

package com.example.xiangmu1.zk3demo;

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

import com.example.xiangmu1.zk3demo.bean.News;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * author:Created by YangYong on 2018/5/26 0026.
 */

class RvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<News.DataBeanX.DataBean> list;
    private MViewHolder holder1;
    private final DisplayImageOptions options;
    private MViewHolder2 holder2;
    private View view;
    private View view2;

    public RvAdapter(Context context, List<News.DataBeanX.DataBean> list) {
        this.context = context;
        this.list = list;
        options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .build();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == 0) {
            view = View.inflate(context, R.layout.item1, null);
            holder1 = new MViewHolder(view);
            return holder1;
        } else {
            view2 = View.inflate(context, R.layout.item2, null);
            holder2 = new MViewHolder2(view2);
            return holder2;
        }
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        News.DataBeanX.DataBean bean = list.get(position);
//        int i = getItemViewType(position);
//        Log.d("i",i+"");
        if (holder instanceof MViewHolder) {
            MViewHolder holder1 = (MViewHolder) holder;
            holder1.item1_title.setText(bean.getTitle());
            String pics = bean.getPics().get(0);
            String imageUrl = getImageUrl(pics);
            ImageLoader.getInstance().displayImage(imageUrl, holder1.item1_img, options);
        } else {
            MViewHolder2 holder2 = (MViewHolder2) holder;
            holder2.item2_title.setText(bean.getTitle());
//            Log.d("===",bean.getPics().size()+"");
            String imageUrl1 = getImageUrl(bean.getPics().get(0));
            String imageUrl2 = getImageUrl(bean.getPics().get(1));
            String imageUrl3 = getImageUrl(bean.getPics().get(2));
            ImageLoader.getInstance().displayImage(imageUrl1, holder2.item2_img1, options);
            ImageLoader.getInstance().displayImage(imageUrl2, holder2.item2_img2, options);
            ImageLoader.getInstance().displayImage(imageUrl3, holder2.item2_img3, options);
        }
//条目长按
        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
//                Toast.makeText(context,"点点点",Toast.LENGTH_SHORT).show();
//                list.remove(position);
//                notifyDataSetChanged();
                if (onItemClickListener != null) {
                    onItemClickListener.removeItem(position);
                }
                return true;
            }
        });
    }

    private String getImageUrl(String pics) {
        return "http://365jia.cn/uploads/" + pics;
    }

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

    @Override
    public int getItemViewType(int position) {
        List<String> type = list.get(position).getPics();
        if (type.size() == 1) {
            return 0;
        } else {
            return 1;
        }
    }

    class MViewHolder extends RecyclerView.ViewHolder {

        private final TextView item1_title;
        private final ImageView item1_img;


        public MViewHolder(View itemView) {
            super(itemView);
            item1_title = view.findViewById(R.id.item1_title);
            item1_img = view.findViewById(R.id.item1_img);

            item1_img.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
//                    Toast.makeText(context,"点点点",Toast.LENGTH_SHORT).show();
                    if (onItemClickListener != null) {
                        onItemClickListener.imageClick(v);
                    }
                }
            });
            //条目点击
//            itemView.setOnLongClickListener(new View.OnLongClickListener() {
//                @Override
//                public boolean onLongClick(View v) {
                    Toast.makeText(context,"点点点",Toast.LENGTH_SHORT).show();
//
//                    return true;
//                }
//            });
        }
    }

    class MViewHolder2 extends RecyclerView.ViewHolder {
        private final TextView item2_title;
        private final ImageView item2_img1;
        private final ImageView item2_img2;
        private final ImageView item2_img3;

        public MViewHolder2(View itemView) {
            super(itemView);
            item2_title = view2.findViewById(R.id.item2_title);
            item2_img1 = view2.findViewById(R.id.item2_img1);
            item2_img2 = view2.findViewById(R.id.item2_img2);
            item2_img3 = view2.findViewById(R.id.item2_img3);


        }
    }

    //定义接口
    public interface OnItemClickListener {
        void imageClick(View v);
        void removeItem(int position);
    }

    private OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值