package com.permissionnanny.demo.content; import android.database.Cursor; import android.database.DatabaseUtils; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.permissionnanny.common.BundleUtil; import com.permissionnanny.demo.ContentRequestFactory; import com.permissionnanny.demo.DemoViewHolder; import com.permissionnanny.demo.R; import com.permissionnanny.lib.Nanny; import com.permissionnanny.lib.request.content.ContentListener; /** * */ public class DemoContentRequestAdapter extends RecyclerView.Adapter<DemoViewHolder> { private ContentRequestFactory mFactory; private Bundle[] mResults; private String[] mContent; public DemoContentRequestAdapter(ContentRequestFactory factory) { mFactory = factory; mResults = new Bundle[mFactory.getCount()]; mContent = new String[mFactory.getCount()]; } @Override public int getItemCount() { return mFactory.getCount(); } @Override public DemoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return 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.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mFactory.getRequest(position).listener(new ContentListener() { @Override public void onResponse(@NonNull Bundle response, @Nullable Cursor data) { mResults[position] = response; mContent[position] = DatabaseUtils.dumpCursorToString(data); notifyItemChanged(position); } }).startRequest(v.getContext(), "demo"); } }); Bundle results = mResults[position]; if (results == null) { holder.tvResponse.setText(null); holder.itemView.setBackgroundColor(0); } else if (Nanny.SC_OK == results.getInt(Nanny.STATUS_CODE)) { holder.tvResponse.setText("Allowed\n" + BundleUtil.toString(results) + '\n' + mContent[position]); holder.itemView.setBackgroundColor(0xFF00FF00); } else { holder.tvResponse.setText("Denied"); holder.itemView.setBackgroundColor(0xFFFF0000); } } }