Ich habe wie ein OnItemClickListener
für RecyclerView
implementiert. Es funktioniert und ich bekomme den Text für die Zeile in der Recyclerview zurück in der Aktivität, aber das Problem ist, dass die Funktion public void rvOnClick(View view, int position)
in meinem MyActivity.class
ruft zweimal. Ich verstehe nicht warum, ich will nur, dass es einmal in jeder Zeile aufgerufen/ausgewählt wird.Schnittstelle für onItemClick von RecyclerView zweimal ausgelöst
MyActivity.class:
public class MyActivity extends AppCompatActivity
implements RecyclerViewClickListener {
@Override
public void rvOnClick(View view, int position) {
mLog.printToLog("Clicked User (from Activity) : " + selAppsList.get(position).getAppname());
}
}
RecyclerViewClickListener.class:
import android.view.View;
public interface RecyclerViewClickListener {
public void rvOnClick(View view, int position);
}
Adapters_SelectApps.class:
public class Adapters_SelectApps extends RecyclerView.Adapter<Adapters_SelectApps.MyViewHolder> {
private List<Model_SelectApps> selAppsList;
private MyAppLogger mLog = new MyAppLogger();
private Context context;
private RecyclerViewClickListener itemListener;
public class MyViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
public TextView tv_selappname;
public ImageView iv_selappicon;
public CheckBox cb_selappcheckbox;
private String mItem;
public MyViewHolder(View view) {
super(view);
tv_selappname = (TextView) view.findViewById(R.id.tv_selappname);
view.setOnClickListener(this);
}
public void setItem(String item) {
mItem = item;
tv_selappname.setText(item);
}
@Override
public void onClick(View v) {
itemListener.rvOnClick(v, getLayoutPosition());
if(itemListener != null) {
itemListener.rvOnClick(v, getAdapterPosition());
}
}
}
public Adapters_SelectApps(Context context,
List<Model_SelectApps> selAppsList) {
this.context = context;
this.selAppsList = selAppsList;
}
public void setClickListener(RecyclerViewClickListener rvItemClickListener) {
this.itemListener = rvItemClickListener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_selappslist, parent, false);
return new Adapters_SelectApps.MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Model_SelectApps app = selAppsList.get(position);
holder.tv_selappname.setText(app.getAppname());
}
@Override
public int getItemCount() {
return selAppsList.size();
}
}