[英]How do I change activities using my recycler view?
我真的很困惑如何使用回收者视图来更改活动! 很抱歉提供了多余的代码,因为我不知道在哪里编写代码,甚至看起来都不像! 任何帮助将不胜感激! 谢谢是前进!
public class DazAdapter extends RecyclerView.Adapter<DazAdapter.MyViewHolder> {
List<Information> data= Collections.emptyList();
private LayoutInflater inflater;
public DazAdapter(Context context, List<Information> data){
inflater=LayoutInflater.from(context);
this.data=data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.custom_row, parent,false);
MyViewHolder holder=new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Information current=data.get(position);
holder.title.setText(current.title);
holder.icon.setImageResource(current.iconId);
}
@Override
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView title;
ImageView icon;
public MyViewHolder(View itemView) {
super(itemView);
title= (TextView) itemView.findViewById(R.id.listText);
icon= (ImageView) itemView.findViewById(R.id.listImage);
}
}
}
试试这个快速又肮脏:
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Information current=data.get(position);
holder.title.setText(current.title);
holder.icon.setImageResource(current.iconId);
holder.icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(icon.getContext(), AnotherActivity.class);
((Activity) icon.getContext()).startActivity(intent);
}
}
}
更正式地讲,您应该创建一个将由Activity
实现的接口,然后将上下文转换为onclick内的内容,以回调您的视图已被单击的状态,然后在Activity中启动Intent。
像这样:
public interface OnDazClickListener {
void onDazClick(String daz);
}
public MyActivity extends Activity implements OnDazClickListener {
@Override
onCreate {
LayoutInflater inflater = LayoutInflater.from(context);
DazAdapter adapter = new DazAdapter(inflater, data, this);
...
}
...
@Override
public void onDazClick(String daz) {
Intent intent = new Intent(this, AnotherActivity.class);
startActivity(intent);
}
}
public class DazAdapter extends RecyclerView.Adapter<DazAdapter.MyViewHolder> {
private final List<Information> data = Collections.emptyList();
private final LayoutInflater inflater;
private final OnDazClickListener listener;
public DazAdapter(LayoutInflater inflater, List<Information> data, OnDazClickListener listener){
this.inflater = inflater;
this.data.addAll(data);
this.listener = listener;
}
...
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Information current=data.get(position);
holder.title.setText(current.title);
holder.icon.setImageResource(current.iconId);
holder.icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onDazClick("some information");
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.