Mein Titel konnte wegen einer Zeichenbeschränkung nicht sehr aussagekräftig sein. Mein Ziel ist, dass, wenn ich auf ein Element INNERHALB der recyclerView
klicke, es die RecyclerView
Position ausdruckt (im Grunde Index).RecyclerView onClick() funktioniert nicht, sondern antwortet nur, wenn ich auf ein einzelnes Element klicke
Verwenden OnClick()
mit XML und regulären Methoden nur crash meine App.
public class torrentAdapter extends RecyclerView.Adapter<torrentAdapter.MyViewHolder> {
private List<torrent> seznamTorrentov;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView upSpeed, downSpeed, progress, name;
public ImageView delete, stanje;
public MyViewHolder(View view) {
super(view);
name = (TextView) view.findViewById(R.id.name);
upSpeed = (TextView) view.findViewById(R.id.upSpeed);
downSpeed = (TextView) view.findViewById(R.id.downSpeed);
progress = (TextView) view.findViewById(R.id.progress);
delete = (ImageView) view.findViewById(R.id.zbrisi);
stanje = (ImageView) view.findViewById(R.id.stanje);
}
}
public torrentAdapter(List<torrent> seznamTorrentov) {
this.seznamTorrentov = seznamTorrentov;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.torrenti_vrsta, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
torrent torrent = seznamTorrentov.get(position);
holder.name.setText(torrent.getName());
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("POZICIJA " + position);
}
});
holder.progress.setText(String.valueOf(torrent.getProgress() + "%"));
//TUKAJ ZAOKROŽUJEMO VREDNOSTI
//TRENUTNO NI PODPORE ZA GIGABITNE PRENOSE
//S SPREMENLJIVKAMA sizeUname in Dname spreminjamo, ali napišemo na koncu hitrosti downloada MB/S ali KB/s
int sizeD = 1024;
int sizeU = 1024;
String sizeUname = "KB/s";
String sizeDname = "KB/s";
if (torrent.getDownSpeed() > 1000000) {
sizeD = 1024 * 1024;
sizeDname = "MB/s";
}
if (torrent.getUpSpeed() > 1000000) {
sizeU = 1024 * 1024;
sizeUname = "MB/s";
}
holder.downSpeed.setText(String.valueOf(Math.round(torrent.getDownSpeed())/sizeD) + sizeDname);
holder.upSpeed.setText(String.valueOf(Math.round(torrent.getUpSpeed())/sizeU) + sizeUname);
//TODO: ZRIHTAJ,DA SE POJAVIJO SLIKE IN PROGRESS BAR
if (torrent.getDownSpeed() == 0 && torrent.getUpSpeed() == 0) {
holder.stanje.setImageResource(R.drawable.check);
}
if (torrent.getStanje().contains("Stopped") || torrent.getStanje().contains("Paused")) {
holder.stanje.setImageResource((R.drawable.stop));
}
if (torrent.getStanje().contains("Downloading")) {
holder.stanje.setImageResource(R.drawable.down);
}
if (torrent.getStanje().contains("Seeding")) {
holder.stanje.setImageResource(R.drawable.up);
}
holder.delete.setImageResource(R.drawable.delete);
}
@Override
public int getItemCount() {
return seznamTorrentov.size();
}
}
Dies ist meine RecyclerViewAdapter
. Löschen ist das drawable
Ich möchte gerne hören. Mit meiner aktuellen Implementierung bekomme ich Antworten, egal wo ich auf die RecyclerView
klicke. Dies ist ein Problem, weil ich zwei verschiedene "Knöpfe" haben soll, die ihre eigenen Funktionen haben, wenn sie geklickt werden.
Wenn es relevant ist, ist dies der Fehler, den ich bekomme, wenn ich OnClick
mit XML verwenden:
java.lang.IllegalStateException: Es kann kein Verfahren deleteTorrent (View) in einem Elternteil oder einen Vorfahren Kontext für Android finden: onClick-Attribut definiert auf Ansichtsklasse android.support.v7.widget.AppCompatImageView mit id 'zbrisi'
Kannst du mehr Details hinzufügen, was genau willst du ?, –