在Recycler View中无法从一个活动转到另一个活动 [英] Cant go from one activity to another in Recycler View

查看:133
本文介绍了在Recycler View中无法从一个活动转到另一个活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello Every One我正在尝试使用针对Recycler视图的适配器类中的意图从一个活动转移到另一个活动但我得到了son = me这样做的错误,以下是错误:
1.PakistaniActivity不是一个封闭的课程。
2.Cannot resolve方法StatrActivity();

Hello Every One I am trying to move from one activity to another using intent in adaptor class of recycler view but I am getting son=me errors in doing so, Following are the errors: 1.PakistaniActivity is not a Enclosing class. 2.Cannot resolve method StatrActivity();

这是我的代码:

PakistaniActivity。 Java

PakistaniActivity.Java

   package com.recycler.hp.navigationbar;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;

     public class PakistaniActivity extends AppCompatActivity {

    @Override
      protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pakistani);
    RecyclerView rl=findViewById(R.id.list);
    rl.setLayoutManager(new LinearLayoutManager(this));
    String[] languges={"Badnamiyan", "song2","song3","song4","Song5","song6","song7","song8","song9"};
    rl.setAdapter(new Adaptor(languges));
    }
     }

Adaptor.java

Adaptor.java

     package com.recycler.hp.navigationbar;

    import android.content.Intent;
     import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
     import android.view.ViewGroup; 
      import android.widget.Button;
       import android.widget.ImageButton;
     import android.widget.ImageView;
     import android.widget.TextView;
     import android.widget.Toast;

      import java.io.IOException;
      import java.net.URL;



       public class Adaptor extends RecyclerView.Adapter<Adaptor.viewholder> {
private String[] data;

public Adaptor(String[] data) {
    this.data = data;
}


@Override
public viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View view = inflater.inflate(R.layout.list_item1, parent, false);
    return new viewholder(view);
}

@Override
public void onBindViewHolder(viewholder holder, final int position) {
    String title = data[position];
    holder.t.setText(title);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
             long x;
             x=getItemId(position);
            if(x==0)
            {
                 Intent intent=new Intent(PakistaniActivity.this,Revival_Activity.class);
                 startActivity(intent);
            }
        }
    });

}

@Override
public int getItemCount() {
    return data.length;
}

public class viewholder extends RecyclerView.ViewHolder {
    ImageView i;
    TextView t;

    public viewholder(View itemView) {
        super(itemView);
        i = itemView.findViewById(R.id.img1);
        t = itemView.findViewById(R.id.main1);
    }
}

   }


推荐答案

尝试不在适配器内启动活动。您可以使用此适配器:

Try not starting activities inside the adapter. You can use this adapter:

public abstract class ClickableAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {

    private ClickItemListener clickItemListener;

    public void setClickItemListener(ClickItemListener clickItemListener) {
        this.clickItemListener = clickItemListener;
    }


    @Override
    public void onBindViewHolder(@NonNull final VH holder, int position) {
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (clickItemListener != null)
                    clickItemListener.onClickItem(holder.itemView, holder.getAdapterPosition());
                else
                    throw new IllegalStateException("Click listener not set");
            }
        });
    }

    public interface ClickItemListener {
        void onClickItem(View v, int position);
    }
}

然后让你的适配器扩展我的:

Then make your adapter extend mine:

public class Adaptor extends ClickableAdapter<Adaptor.viewholder> {
private String[] data;

public Adaptor(String[] data) {
    this.data = data;
}


@Override
public viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View view = inflater.inflate(R.layout.list_item1, parent, false);
    return new viewholder(view);
}

@Override
public void onBindViewHolder(viewholder holder, final int position) {
    super.onBindViewHolder(holder,position);
    String title = data[position];
    holder.t.setText(title);

}

@Override
public int getItemCount() {
    return data.length;
}

public class viewholder extends RecyclerView.ViewHolder {
    ImageView i;
    TextView t;

    public viewholder(View itemView) {
        super(itemView);
        i = itemView.findViewById(R.id.img1);
        t = itemView.findViewById(R.id.main1);
    }
}

   }

最后在您的活动可以设置适配器的行为:

Finally in your activity you can set the behaviour for the adapter:

Adaptor adapter = new Adaptor(languges)
rl.setAdapter(adapter);

adapter.setClickItemListener(new ClickableAdapter.ClickItemListener() {
            @Override
            public void onClickItem(View v, int position) {
                if(position==0)
            {
                 Intent intent=new Intent(PakistaniActivity.this,Revival_Activity.class);
                 startActivity(intent);
            }

            }
        });

这篇关于在Recycler View中无法从一个活动转到另一个活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆