![](/img/trans.png)
[英]How to open a different activity on recyclerView item onclick
[英]RecyclerView onClick to different activity on each position
我是新手,想問關於 onClick RecyclerView 的問題。
我從http://wimsonevel.blogspot.co.id/2016/03/tutorial-android-recyclerview-and.html
找到了這個腳本
我已通過此代碼成功創建了另一個活動的意圖:
@Override
public void onBindViewHolder(MemberViewHolder holder, int position) {
final Member member = memberList.get(position);
holder.memberThumb.setImageResource(member.getThumb());
holder.memberName.setText(member.getName());
holder.memberTeam.setText(member.getTeam());
holder.memberCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go;
go = new Intent(view.getContext(),Main2Activity.class);
view.getContext().startActivity(go);
}
});
}
但我想為每個 CardView 位置添加意圖。 如果位置 0,則轉到 Main0Activity,如果位置 1,則轉到 Main1Activity,以此類推。
我的代碼(不起作用):
@Override
public void onBindViewHolder(MemberViewHolder holder, int position) {
final Member member = memberList.get(position);
holder.memberThumb.setImageResource(member.getThumb());
holder.memberName.setText(member.getName());
holder.memberTeam.setText(member.getTeam());
holder.memberCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onItemClick(View<?> parent, View view, int position, long id) {
Intent go;
if (position==0){
go = new Intent(view.getContext(),Main0Activity.class);
view.getContext().startActivity(go);
}
else if (position==1){
go = new Intent(view.getContext(),Main1Activity.class);
view.getContext().startActivity(go);
}
else if (position==2){
go = new Intent(view.getContext(),Main2Activity.class);
view.getContext().startActivity(go);
}
else if (position==3){
go = new Intent(view.getContext(),Main3Activity.class);
view.getContext().startActivity(go);
}
else if (position==4){
go = new Intent(view.getContext(),Main4Activity.class);
view.getContext().startActivity(go);
}
}
});
}
錯誤:
Error:(74, 73) error: <anonymous com.example.wim.androidrecyclerview.adapter.MemberListAdapter$1> is not abstract and does not override abstract method onClick(View) in OnClickListener
Error:(76, 13) error: method does not override or implement a method from a supertype
如何解決這個問題?
謝謝
對不起,我的英語不好
完整代碼: https://gist.github.com/anonymous/e15b222bfc20ba21eaf5c2c8d566166b
: https://gist.github.com/anonymous/e15b222bfc20ba21eaf5c2c8d566166b
覆蓋onClick
方法。 試試這個,
@Override
public void onBindViewHolder(MemberViewHolder holder, final int position) {
final Member member = memberList.get(position);
holder.memberThumb.setImageResource(member.getThumb());
holder.memberName.setText(member.getName());
holder.memberTeam.setText(member.getTeam());
holder.memberCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go;
if (position==0){
go = new Intent(view.getContext(),Main0Activity.class);
view.getContext().startActivity(go);
}
else if (position==1){
go = new Intent(view.getContext(),Main1Activity.class);
view.getContext().startActivity(go);
}
else if (position==2){
go = new Intent(view.getContext(),Main2Activity.class);
view.getContext().startActivity(go);
}
else if (position==3){
go = new Intent(view.getContext(),Main3Activity.class);
view.getContext().startActivity(go);
}
else if (position==4){
go = new Intent(view.getContext(),Main4Activity.class);
view.getContext().startActivity(go);
}
}
});
}
嘗試在 itemview 上添加點擊監聽器,像這樣holder.itemview.setOnClickListener
@Override
public void onBindViewHolder(MemberViewHolder holder, int position) {
final Member member = memberList.get(position);
holder.memberThumb.setImageResource(member.getThumb());
holder.memberName.setText(member.getName());
holder.memberTeam.setText(member.getTeam());
holder.itemview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go;
if (position==0){
go = new Intent(view.getContext(),Main0Activity.class);
view.getContext().startActivity(go);
}
else if (position==1){
go = new Intent(view.getContext(),Main1Activity.class);
view.getContext().startActivity(go);
}
else if (position==2){
go = new Intent(view.getContext(),Main2Activity.class);
view.getContext().startActivity(go);
}
else if (position==3){
go = new Intent(view.getContext(),Main3Activity.class);
view.getContext().startActivity(go);
}
else if (position==4){
go = new Intent(view.getContext(),Main4Activity.class);
view.getContext().startActivity(go);
}
}
});
}
您應該像在第一個示例中一樣覆蓋onClick
。 如果您需要onBindViewHolder
位置提供給您:
public void onBindViewHolder(MemberViewHolder holder, int position ) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.