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; } }