在adapter-recyclerview和另一个类之间共享数据

时间:2019-02-07 18:23:05

标签: java android

我想在另一个活动中向变量发送单击某个项目的位置。我向您展示我的作品无效。当我按下一个项目时,应用程序退出。

适配器中的MyViewHolder:

public class AccessToken
{
    public string token_type { get; set; }
    public string expires_in { get; set; }
    public string ext_expires_in { get; set; }
    public string expires_on { get; set; }
    public string not_before { get; set; }
    public string resource { get; set; }
    public string access_token { get; set; }
    public string refresh_token { get; set; }
    public object Status_Code { get; set; }
}

我的活动记录:

public myViewHolder(View itemView) {
    super(itemView);

    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // get position
            int poss = getAdapterPosition();

            // sharing position
            Intent intent = new Intent(mContext, Main2Activity.class);
            intent.putExtra("position", poss );
            mContext.startActivity(intent);

            }
        }
    });

3 个答案:

答案 0 :(得分:1)

尝试

  public class Main2Activity extends AppCompatActivity {
    private TextView textTest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);


        textTest = findViewById(R.id.text_test);
        int id = getIntent().getExtras().getInt("position");
        String position = String.valueOf(id);
        textTest.setText(position);

    }

答案 1 :(得分:1)

从onCreate()方法外部删除此行代码int id = getIntent().getExtras().getInt("position");,并将此代码放入Main2Activity中的onCreate方法内部

        textTest = findViewById(R.id.text_test);
        int id = getIntent().getExtras().getInt("position");
        String position = String.valueOf(id);
        textTest.setText(position);

答案 2 :(得分:1)

创建接口类

Public interface OnPostionClick{
Public void yourmethod(int pos)
}

将接口方法放在适配器viewHolder onClick方法上

If(context instanceof OnPostionClick){
((OnPostionClick) context).yourmethod(poss);
}

第二活动上的实现OnPostionClick界面,并覆盖yourmethod