Skip to content

Instantly share code, notes, and snippets.

@truedem
Created November 2, 2015 15:49
Show Gist options
  • Save truedem/2f4591069ce41fc632ed to your computer and use it in GitHub Desktop.
Save truedem/2f4591069ce41fc632ed to your computer and use it in GitHub Desktop.
AdapterRecycler.java with multiple click listeners
package pk.minitodo.base;
/**
* Created by PK on 11.10.2015.
*/
import android.content.Context;
import android.content.res.Resources;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class AdapterRecycler extends RecyclerView.Adapter<AdapterRecycler.VersionViewHolder> {
/*
// usage in onCreate onCreateView:
adapter.setOnItemClickListener(new AdapterRecycler.ClickListener() {
String TAG = "clicky";
@Override
public void onItemClick(int position, View v) {
int id = v.getId();
String IdAsString = v.getResources().getResourceName(v.getId());
String thisTitle = mList.get(position).getTitle();
Log.d(TAG, "onItemClick position: " + position + " TitleID:" + thisTitle + " viewID: " + IdAsString);
}
@Override
public void onItemLongClick(int position, View v) {
// stuff
}
});
*/
// List<String> itemList;
ArrayList<DataUnit> itemList;
Context context;
// OnItemClickListener clickListener;
private ClickListener clickListener;
int[] item_status_values;
String[] item_status_labels;
int[] item_status_images;
public AdapterRecycler(Context context) {
this.context = context;
}
public AdapterRecycler(Context context, ArrayList<DataUnit> arrayList) {
this.itemList = arrayList;
Resources res = context.getResources();
item_status_values = res.getIntArray(R.array.item_status_values);
item_status_labels = res.getStringArray(R.array.item_status_labels);
item_status_images = new int[] {
R.drawable.ic_alarm_grey600_18dp,
R.drawable.ic_alarm_check_grey600_18dp,
R.drawable.ic_close_circle_outline_grey600_18dp
};
}
public AdapterRecycler(ArrayList<DataUnit> arrayList) {
this.itemList = arrayList;
item_status_values = null;
item_status_labels = null;
}
@Override
public VersionViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_recycler, viewGroup, false);
VersionViewHolder viewHolder = new VersionViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(VersionViewHolder versionViewHolder, int i) {
// versionViewHolder.title.setText(itemList.get(i));
versionViewHolder.itemTitle.setText(itemList.get(i).getTitle());
Long theseMillis = itemList.get(i).getDateTime();
if(theseMillis > 0) {
SimpleDateFormat formatter = new SimpleDateFormat("EEE, d HH:mm");
String thisDate = formatter.format(theseMillis);
versionViewHolder.itemDateTime.setText(thisDate);
versionViewHolder.itemDateTime.setVisibility(View.VISIBLE);
int alertSuppressed = itemList.get(i).getAlert();
if(alertSuppressed < 1) {
versionViewHolder.itemDateTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
} else {
versionViewHolder.itemDateTime.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_alarm_off_grey600_18dp, 0, 0, 0);
}
} else {
versionViewHolder.itemDateTime.setVisibility(View.INVISIBLE);
}
int thisStatus = itemList.get(i).getStatus();
if(item_status_values != null) {
for(i = 0; i < item_status_values.length; i++) {
if(item_status_values[i] == thisStatus) {
versionViewHolder.itemDescription.setText(item_status_labels[i]);
versionViewHolder.itemDescription.setCompoundDrawablesWithIntrinsicBounds(item_status_images[i], 0, 0, 0);
}
}
}
}
@Override
public int getItemCount() {
return itemList == null ? 0 : itemList.size();
}
class VersionViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
CardView cardItemLayout;
TextView itemTitle;
TextView itemDescription;
TextView itemDateTime;
public VersionViewHolder(View itemView) {
super(itemView);
itemView.setOnLongClickListener(this);
cardItemLayout = (CardView) itemView.findViewById(R.id.cardlist_item);
itemTitle = (TextView) itemView.findViewById(R.id.listitem_name);
itemDescription = (TextView) itemView.findViewById(R.id.listitem_description);
itemDateTime = (TextView) itemView.findViewById(R.id.listitem_datetime);
itemDescription.setOnLongClickListener(this); // long click should be set up before standard click
itemDescription.setOnClickListener(this);
cardItemLayout.setOnClickListener(this);
}
@Override
public void onClick(View v) {
clickListener.onItemClick(getAdapterPosition(), v);
}
@Override
public boolean onLongClick(View v) {
clickListener.onItemLongClick(getAdapterPosition(), v);
// return false; // fire normal click also
return true;
}
}
public void setOnItemClickListener(ClickListener listener) {
clickListener = listener;
}
public interface ClickListener {
void onItemClick(int position, View v);
void onItemLongClick(int position, View v);
}
/*
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
public void SetOnItemClickListener(final OnItemClickListener itemClickListener) {
this.clickListener = itemClickListener;
}
*/
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment