package com.permissionnanny.demo; import android.animation.ObjectAnimator; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.permissionnanny.lib.Nanny; import com.thedeanda.lorem.Lorem; import java.net.HttpURLConnection; /** * */ public class DemoSimpleRequestAdapter<VH extends DemoViewHolder> extends RecyclerView.Adapter<VH> implements DataAdapter { private final SimpleRequestFactory mFactory; private final Bundle[] mResponse; private final String[] mData; public DemoSimpleRequestAdapter(SimpleRequestFactory factory) { mFactory = factory; mResponse = new Bundle[mFactory.getCount()]; mData = new String[mFactory.getCount()]; } @Override public int getItemCount() { return mFactory.getCount(); } @Override public VH onCreateViewHolder(ViewGroup parent, int viewType) { return (VH) new DemoViewHolder(LayoutInflater.from(parent.getContext()) .inflate(R.layout.wifi_listitem, parent, false)); } @Override public void onBindViewHolder(DemoViewHolder holder, final int position) { holder.tvRequest.setText(mFactory.getLabel(position)); holder.btnExtras.setVisibility(mFactory.hasExtras(position) ? View.VISIBLE : View.GONE); holder.btnExtras.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mFactory.buildDialog(v.getContext(), position).show(); } }); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mFactory.getRequest(position, DemoSimpleRequestAdapter.this) .startRequest(v.getContext(), Config.longReason ? Lorem.getParagraphs(10, 10) : "demo reason"); } }); Bundle results = mResponse[position]; if (results == null) { holder.tvResponse.setText(null); holder.itemView.setBackgroundColor(0); } else { int sc = results.getInt(Nanny.STATUS_CODE); String newData = sc + "\n" + mData[position]; holder.tvResponse.setText(newData); if (HttpURLConnection.HTTP_OK == sc) { if (!holder.tvResponse.getText().equals(newData)) { if (Build.VERSION.SDK_INT >= 11) { ObjectAnimator.ofFloat(holder.itemView, "alpha", 1, 0, 1, 0, 1).setDuration(2000).start(); } } holder.itemView.setBackgroundColor(Color.GREEN); } else { holder.itemView.setBackgroundColor(Color.RED); } } } @Override public void onResponse(int position, Bundle response) { mResponse[position] = response; notifyItemChanged(position); } @Override public void onData(int position, String data) { mData[position] = data; notifyItemChanged(position); } }