【问题标题】:How do I change activities using my recycler view?如何使用我的回收站视图更改活动?
【发布时间】:2014-12-30 19:55:10
【问题描述】:

我真的很困惑如何使用回收器视图更改活动!很抱歉提供了多余的代码,因为我不知道在哪里编写代码或者它看起来像什么!任何帮助将不胜感激! 谢谢提前!

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);
    }
  }
}

【问题讨论】:

  • 如何使用回收站视图更改活动是什么意思?
  • @reVerse as in go 切换到不同的活动/片段。
  • 您应该通过您的适配器和接口来执行此操作。请编辑您的问题并实现 DazAdapter 的代码。
  • @reVerse 抱歉,我不知道,在那里修复了

标签: java android android-activity android-recyclerview


【解决方案1】:

试试这个又快又脏:

@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 中的上下文强制转换为 this 可以回调您的视图已被单击,然后在活动中启动 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");
         }
      }
    }
}

【讨论】:

  • 您没有指向更正式方法的示例或教程的链接吗?
  • 你的onDazClick icon 出现错误..cannot resolved symbol icon``
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多