Sortieren von neuen auf Android so nackten mit mir, wenn dies eine einfache Frage ist.Android RecyclerView onClick in verschiedenen Aktivitäten
Alles funktioniert gut und mein onClick in meinem RecyclerView funktioniert, um die Positionen meiner Artikel zu bekommen, aber mein Entwurf verlangt, dass ich auf ein Element des RecyclerView klicken und eine neue Aktivität eröffnen kann (als Popover oder Pop-up). Ich kann das erreichen, aber meine Probleme kommen mit den Informationen, die ich auf dem Popover anzeigen muss. Die Informationen stammen wie dies in der Aktivität (innerhalb eines Firebase Anruf Wert)
attributeList.removeAll(attributeList);
for (DataSnapshot child : dataSnapshot.child("Attribute").getChildren()){
Attribute attribute = child.getValue(Attribute.class);
attribute_list newAttributeList = new attribute_list(attribute.Name + ": " + attribute.Value);
attributeList.add(newAttributeList);
}
attributeAdapter = new attribute_list_adapter(attributeList, getContext());
recyclerAttribute.setAdapter(attributeAdapter);
Dies funktioniert perfekt für die Anzeige von Informationen, aber es gibt mehr als nur ein „Wert“ und „name“ mit dem Klick zugeordnet.
Grundsätzlich, wenn ich ein Element auswähle, muss ich die Position des Elements angeklickt (die ich habe) und vergleichen Sie es mit der Position in attributeList, so dass ich einen Firebase-Aufruf aufrufen kann (oder die Daten irgendwie weitergeben) popover Werte aus dem "Attribut" Klasse angezeigt werden (wie zB Name, Wert, Beschreibung und eine andere Liste (recyclerView)
Mein recyclerView.
public class attribute_list_adapter extends RecyclerView.Adapter<attribute_list_adapter.ViewHolder> {
private List<attribute_list> listItems;
private Context context;
public attribute_list_adapter(List<attribute_list> listItems, Context context) {
this.listItems = listItems;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.attribute_list, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
attribute_list listItem = listItems.get(position);
holder.txtTitle.setText(listItem.getTxtTitle());
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView txtTitle;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
txtTitle = (TextView) itemView.findViewById(R.id.txtTitle);
}
@Override
public void onClick(View v) {
}
}
}
Sie müssen den Wert unter *** void onItemClick (int position) ändern; *** –
Sieht vielversprechend aus. your_adapter.setOnItemClickListener (this); Verhält sich nicht richtig. Wenn Sie "your_adapt" angeben, sagen Sie meine RecyclerView.Adapter-Variable? Keine meiner Variablen hat diese Methode zu setzen, die (wie ich glaube) daraus resultiert, dass die Position null ist. Hast du einen Moment zu klären? – Torewin
Ich aktualisiere meine Antwort? –