Created
November 2, 2015 15:49
-
-
Save truedem/2f4591069ce41fc632ed to your computer and use it in GitHub Desktop.
AdapterRecycler.java with multiple click listeners
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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