package example.com.mvp05.model.https; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * author:Created by niuyuejiao on 2018/4/18. */ public class HttpUntils implements Callback { private static HttpUntils INSTANCE; private final OkHttpClient okHttpClient; public static HttpUntils getInstance() { if (INSTANCE == null) { synchronized (HttpUntils.class) { if (INSTANCE == null) { INSTANCE = new HttpUntils(); } } } return INSTANCE; } public HttpUntils(){ okHttpClient = new OkHttpClient.Builder().build(); } private HttpCallback mhttpCallback; public String doGet(String path, HttpCallback httpCallback) { this.mhttpCallback = httpCallback; final Request request = new Request.Builder() .url(path) .build(); Call call = okHttpClient.newCall(request); call.enqueue(this); return ""; } @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); mhttpCallback.onSuccess(string); } }
package example.com.mvp05.view.adapter; import android.animation.ObjectAnimator; 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.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; import example.com.mvp05.R; import example.com.mvp05.model.bean.NewsBeans; import example.com.mvp05.model.https.ImageloaderUntils; /** * author:Created by niuyuejiao on 2018/4/27. */ public class RecyclerAdapter extends RecyclerView.Adapter implements View.OnClickListener { private Context context; List<NewsBeans.DataBean> beanList; ImageLoader instance = ImageLoader.getInstance(); DisplayImageOptions optiosn = ImageloaderUntils.getOptiosn(); private SetOnClickItem msetOnClickItem; public RecyclerAdapter(Context context, List<NewsBeans.DataBean> beanList) { this.context = context; this.beanList = beanList; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 0) { View inflate = View.inflate(context, R.layout.one_layout, null); RecyclerView.ViewHolder viewHolderOne = new ViewHolderOne(inflate); inflate.setOnClickListener(this); return viewHolderOne; } else { View inflate = View.inflate(context, R.layout.two_layout, null); RecyclerView.ViewHolder viewHolderTwo = new ViewHolderTwo(inflate); inflate.setOnClickListener(this); return viewHolderTwo; } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { int type = getItemViewType(position); switch (type) { case 0: final ViewHolderOne one = (ViewHolderOne) holder; instance.displayImage(beanList.get(position).getPic_url(), one.img01, optiosn); //点击图片 one.img01.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //属性动画 ObjectAnimator alpha = ObjectAnimator.ofFloat(one.img01, "alpha", 1f, 1f, 0f, 1f); alpha.setDuration(5000); alpha.start(); } }); one.itemView.setId(position); break; case 1: final ViewHolderTwo two = (ViewHolderTwo) holder; two.text02.setText(beanList.get(position).getNews_title()); instance.displayImage(beanList.get(position).getPic_url(), two.img02, optiosn); two.itemView.setId(position); //点击图片 two.img02.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //属性动画 ObjectAnimator alpha = ObjectAnimator.ofFloat(two.img02, "alpha", 1f, 1f, 0f, 1f); alpha.setDuration(5000); alpha.start(); } }); /* two.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Log.e("myMessage", "view"); AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage("确定删除吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { beanList.remove(position); notifyDataSetChanged(); } }); builder.setNegativeButton("取消", null); builder.create().show(); return false; } });*/ break; } } @Override public int getItemCount() { return beanList.size(); } @Override public int getItemViewType(int position) { if (position % 2 == 0) { return 0; } else { return 1; } } @Override public void onClick(View view) { if(msetOnClickItem!=null){ msetOnClickItem.onLongClick(view,view.getId()); } } class ViewHolderOne extends RecyclerView.ViewHolder { private ImageView img01; public ViewHolderOne(View itemView) { super(itemView); img01 = itemView.findViewById(R.id.img01); } } class ViewHolderTwo extends RecyclerView.ViewHolder { private TextView text02; private ImageView img02; private View itemView; public ViewHolderTwo(View itemView) { super(itemView); this.itemView = itemView; text02 = itemView.findViewById(R.id.text02); img02 = itemView.findViewById(R.id.img02); } } //接口回调 public interface SetOnClickItem { void onLongClick(View view, int position); } public void clickItemLisenter(SetOnClickItem setOnClickItem) { this.msetOnClickItem = setOnClickItem; } }
package example.com.mvp05.view.activity; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.Button; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.ArrayList; import java.util.List; import example.com.mvp05.R; import example.com.mvp05.model.bean.NewsBeans; import example.com.mvp05.presenter.MainPresenter; import example.com.mvp05.view.adapter.RecyclerAdapter; import example.com.mvp05.view.interfaces.IMainView; public class MainActivity extends BaseActivity<MainPresenter> implements IMainView { private Button btn; private RecyclerView recycler; List<NewsBeans.DataBean> list = new ArrayList<>(); int p; private Handler handler = new Handler() { private RecyclerAdapter recyclerAdapter; @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { String s = (String) msg.obj; //解析 Gson gson = new GsonBuilder().create(); NewsBeans newsBeans = gson.fromJson(s, NewsBeans.class); List<NewsBeans.DataBean> data = newsBeans.getData(); list.addAll(data); //设置适配器的方法 initAdapter(); recyclerAdapter.notifyDataSetChanged(); } if (msg.what == 1) { recyclerAdapter.notifyDataSetChanged(); } } private void initAdapter() { recyclerAdapter = new RecyclerAdapter(MainActivity.this, list); //调用adapter里面的接口回调 recyclerAdapter.clickItemLisenter(new RecyclerAdapter.SetOnClickItem() { @Override public void onLongClick(View view, int position) { p = position; //对话框 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage("确定删除吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { list.remove(p); handler.sendEmptyMessage(1); } }); builder.setNegativeButton("取消", null); builder.create().show(); } }); recycler.setAdapter(recyclerAdapter); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected int setLayout() { return R.layout.activity_main; } @Override protected MainPresenter setPresenter() { return new MainPresenter(); } @Override protected void initView() { recycler = findViewById(R.id.recycler); //布局管理器 recycler.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false)); } @Override protected void initData() { String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; basePresenter.loadDataFromSever(path); } @Override public void onSuccess(String s) { Log.e("myMessage", s); Message msg = new Message(); msg.what = 0; msg.obj = s; handler.sendMessage(msg); } }