无法在RecyclerAdapter中设置方法setResult

Olo*_*ing 5 android recycler-adapter

在我的应用程序中,我需要启动RecyclerAdapter.class并等待结果,但我不能写行setResult并完成:

public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView title;
    ImageView icon;

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

        title = (TextView) itemView.findViewById(R.id.list_title);
        icon = (ImageView) itemView.findViewById(R.id.list_item);
        icon.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        String selectedCountry;




        int country = getPosition();

        String ololo = Integer.toString(country);

        Log.i("WORKS" ,"??????? ?????? ??? ???????" +ololo);
        switch (getPosition()) {
            case 0:
                selectedCountry = "ukr";
                Log.i ("1" ,"" +selectedCountry);
                Intent intent= new Intent();
                intent.putExtra("country", selectedCountry);


            break;
            case 1:
                selectedCountry = "by";
                Log.i ("1" ,"" +selectedCountry);
                break;
            case 2:
                selectedCountry = "rus";
                Log.i ("1" ,"" +selectedCountry);
                break;
            case 3:
                selectedCountry = "nrus";
                Log.i ("1" ,"" +selectedCountry);
                break;
        }



        //intent. putExtra("country")

    }
}
Run Code Online (Sandbox Code Playgroud)

我需要怎么写?请帮助我并解释我做错了什么我需要从我的所有情况中设置

编辑:

public class RecyclerAdapterChooseCountry extends RecyclerView.Adapter<RecyclerAdapterChooseCountry.MyViewHolder> {

private LayoutInflater inflater;

List<CountryInformation> data = Collections.emptyList();

public RecyclerAdapterChooseCountry(Context context, List<CountryInformation> data) {
    inflater = LayoutInflater.from(context);
    this.data = data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.country_list, parent, false);
    MyViewHolder holder = new MyViewHolder(view, mActivity /*<- cant add this*/ );
    return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {

    CountryInformation information = data.get(position);

    holder.title.setText(information.title);
    holder.icon.setImageResource(information.iconId);

}

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


public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView title;
    ImageView icon;

    private Activity mActivity;

    public MyViewHolder(View itemView, Activity mActivity  ) {
        super(itemView);

        title = (TextView) itemView.findViewById(R.id.list_title);
        icon = (ImageView) itemView.findViewById(R.id.list_item);
        icon.setOnClickListener(this);
        this.mActivity = mActivity;
    }

    @Override
    public void onClick(View v) {

        String selectedCountry;

        int country = getPosition();

        String ololo = Integer.toString(country);

        Log.i("WORKS", "??????? ?????? ??? ???????" + ololo);
        switch (getPosition()) {
            case 0:
                selectedCountry = "ukr";
                Log.i("1", "" + selectedCountry);
                Intent intent = new Intent();
                intent.putExtra("country", selectedCountry);
                mActivity.setResult(mActivity.RESULT_OK, intent);
                mActivity.finish();

                break;
            case 1:
                selectedCountry = "by";
                Log.i("1", "" + selectedCountry);
                break;
            case 2:
                selectedCountry = "rus";
                Log.i("1", "" + selectedCountry);
                break;
            case 3:
                selectedCountry = "nrus";
                Log.i("1", "" + selectedCountry);
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

ρяσ*_*я K 7

无法在RecyclerAdapter中设置方法setResult

setResultMyViewHolder类内部是不可访问的,因为setResult是在Activity类中定义的

setResult在创建Adapter的对象时,用于从Adapter构造函数中的非Activity类传递Activity上下文访问:

private Activity mActivity;
public MyViewHolder(View itemView,Activity mActivity) {
        super(itemView);
        /...your code here..
        this.mActivity=mActivity;
 }
Run Code Online (Sandbox Code Playgroud)

使用mActivity访问setResult内部巴顿的onClick