文字制限のため、私のタイトルはあまり説明できませんでした。私の目標は、recyclerView
の中の要素をクリックすると、RecyclerView
の位置(基本的にインデックス)が表示されるということです。RecyclerView onClick()は機能しません。単一の要素をクリックしたときにのみ応答します。
OnClick()
をXMLで使用し、通常のOnClick
メソッドを使用すると、アプリがクラッシュするだけです。
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();
}
}
これは私のRecyclerViewAdapter
です。削除はdrawable
です。OnClick
を聞きたいです。現在の実装では、どこでRecyclerView
をクリックしても応答が得られます。これは問題です。なぜなら、私は、クリックされたときに独自の機能を持つ2つの異なる「ボタン」を持つことになっているからです。
それは、関連するなら、これは私がXMLでOnClick
を使用するときに私が取得エラーです:
java.lang.IllegalStateException:アンドロイドの親や先祖のコンテキストでメソッドdeleteTorrent(ビュー)を見つけることができませんでした。 onClickの属性ID「zbrisi」
正確に何をしたいのかという詳細を追加できますか? –