Здравствуйте. Есть адаптер, который используют несколько фрагментов с RecyclerView. Я сначало для одного фрагмента сделал через интерфейсы слушатель нажатия на итем и передача позиции в активити. Но теперь тестирую на остальных фрагментах и в активити передаеться позиция с первого фрагмента. Как сделать чтобы при клике адаптер понимал что это за фрагмент и брал позицию именно с активного фрагмента? Или правильнее будет использовать один фрагмент и менять данные в адаптее?
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder>{
public CustomAdapter() {
}
public interface OnRecyclerVewItemClickListener {
void OnClickRecyclerVewItem(int k);
}
public interface OnInWorkVewItemClickListener {
void OnClickInWorkVewItem(int k);
}
private static final String TAG = "ррр";
static private OnRecyclerVewItemClickListener mClickListener;
static private OnInWorkVewItemClickListener mClickListener2;
public CustomAdapter(OnRecyclerVewItemClickListener clickListener){
mClickListener = clickListener;
}
public CustomAdapter(OnInWorkVewItemClickListener clickListener2){
mClickListener2 = clickListener2;
}
//private String[] mDataSet;
private ArrayList<Event> mDataSet;
// BEGIN_INCLUDE(recyclerViewSampleViewHolder)
/**
* Provide a reference to the type of views that you are using (custom ViewHolder)
*/
public static class ViewHolder extends RecyclerView.ViewHolder {
private final TextView textView, textView2, textView3, textView5, textView6, fDataTextVew, lDataTextVew;
public ViewHolder(View v) {
super(v);
// Define click listener for the ViewHolder's View.
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mClickListener != null){
mClickListener.OnClickRecyclerVewItem(getAdapterPosition());
android.util.Log.i(TAG, "Element " + getAdapterPosition() + " clicked.");
}
if(mClickListener2 != null){
mClickListener2.OnClickInWorkVewItem(getAdapterPosition());
android.util.Log.i(TAG, "Element " + getAdapterPosition() + " clicked.");
}
}
});
textView = (TextView) v.findViewById(R.id.textView);
textView2 = (TextView) v.findViewById(R.id.textView2);
textView3 = (TextView) v.findViewById(R.id.textView3);
textView5 = (TextView) v.findViewById(R.id.textView5);
fDataTextVew = (TextView) v.findViewById(R.id.fDataTextVew);
lDataTextVew = (TextView) v.findViewById(R.id.lDataTextVew);
textView6 = (TextView) v.findViewById(R.id.textView5);
}
public TextView getTextView() {
return textView;
}
}
public CustomAdapter(ArrayList<Event> dataSet) {
this.mDataSet = dataSet;
}
public ArrayList<Event> getData(){
if(mDataSet == null){
mDataSet = new ArrayList<Event>();
}
return mDataSet;
}
public void setData(ArrayList<Event> dataSet){
mDataSet = dataSet;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.text_row_item, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
Log.d(TAG, "Element " + position + " set.");
....................................
}
@Override
public int getItemCount() {
return mDataSet.size();
}
}