繁体   English   中英

如何使用“回收者”视图更改活动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM