Java 如何在RecyclerView.Adapter中使用onActivityResult

Java 如何在RecyclerView.Adapter中使用onActivityResult,java,android,android-recyclerview,adapter,onactivityresult,Java,Android,Android Recyclerview,Adapter,Onactivityresult,我想在RecyclerView.Adapter中使用onActivityResult。但我不明白在我的情况下,这个版本是如何发布的。我有一个动态循环视图适配器 RecyclerView.Adapter: public class SettingsRecyclerAdapter extends RecyclerView.Adapter { private ArrayList<SettingsTypeModel> dataSet; Context mContext;

我想在RecyclerView.Adapter中使用onActivityResult。但我不明白在我的情况下,这个版本是如何发布的。我有一个动态循环视图适配器

RecyclerView.Adapter:

public class SettingsRecyclerAdapter extends RecyclerView.Adapter {

    private ArrayList<SettingsTypeModel> dataSet;
    Context mContext;
    int total_types;


    TextInputLayout textInputLayoutIncome;
    TextInputLayout textInputLayoutCosts;
    EditText editIncome;
    EditText editCosts;

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

        textInputLayoutIncome = (TextInputLayout) itemView.findViewById(R.id.textInputLayoutIncome);
        editIncome = (EditText) textInputLayoutIncome.findViewById(R.id.editIncome);

        textInputLayoutCosts = (TextInputLayout) itemView.findViewById(R.id.textInputLayoutCosts);
        editCosts = (EditText) textInputLayoutCosts.findViewById(R.id.editCosts);
        }
    }
    public static class SendToMailTypeViewHolder extends RecyclerView.ViewHolder {

        Switch switchSendMailReport;

        public SendToMailTypeViewHolder(View itemView) {
            super(itemView);
            switchSendMailReport = (Switch) itemView.findViewById(R.id.switchSendMailReport);
        }
    }

    public static class SendToDriveTypeViewHolder extends RecyclerView.ViewHolder {

        Switch switchDriveReport;

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

            switchDriveReport = (Switch) itemView.findViewById(R.id.switchDriveReport);
        }
    }

    public SettingsRecyclerAdapter(ArrayList<SettingsTypeModel> data, Context context) {
        this.dataSet = data;
        this.mContext = context;
        total_types = dataSet.size();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        switch (viewType) {
            case SettingsTypeModel.TYPE_SEND_TO_MAIL:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.type_send_to_mail, parent, false);
                return new SendToMailTypeViewHolder(view);
            case SettingsTypeModel.TYPE_SEND_TO_DRIVE:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.type_send_to_drive, parent, false);
                return new SendToDriveTypeViewHolder(view);
        }
        return null;
    }

    @Override
    public int getItemViewType(int position) {
        switch (dataSet.get(position).type) {
            case 4:
                return SettingsTypeModel.TYPE_SEND_TO_MAIL;
            case 5:
                return SettingsTypeModel.TYPE_SEND_TO_DRIVE;
            default:
                return -1;
        }
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int listPosition) {

        SettingsTypeModel object = dataSet.get(listPosition);
        if (object != null) {
            switch (object.type) {
                case SettingsTypeModel.TYPE_SEND_TO_MAIL:

                    ((SendToMailTypeViewHolder) holder).switchSendMailReport.setChecked(false);
                    ((SendToMailTypeViewHolder) holder).switchSendMailReport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            if (isChecked) {

                            } else {

                            }
                        }
                    });
                    //       switchSendMailReport.setChecked(getSwitchSendReportMail());

                    break;

                case SettingsTypeModel.TYPE_SEND_TO_DRIVE:

                    ((SendToDriveTypeViewHolder) holder).switchDriveReport.setChecked(false);
                    ((SendToDriveTypeViewHolder) holder).switchDriveReport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            if (isChecked) {
                                ((SendToDriveTypeViewHolder) holder).switchDriveReport.setChecked(false);

                            } else {

                            }
                        }
                    });

                    break;
                }
            }
        }

        @Override
        public int getItemCount() {
            return dataSet.size();
        }
     }
public class SettingsActivity extends AppCompatActivity {

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

        ArrayList<SettingsTypeModel> list= new ArrayList<>();
        list.add(new SettingsTypeModel(SettingsTypeModel.TYPE_SEND_TO_MAIL));
        list.add(new SettingsTypeModel(SettingsTypeModel.TYPE_SEND_TO_DRIVE));

        SettingsRecyclerAdapter adapter = new SettingsRecyclerAdapter(list,this);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, OrientationHelper.VERTICAL, false);

        RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recyclerVieww);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        mRecyclerView.setLayoutManager(linearLayoutManager);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        mRecyclerView.setClickable(true);
        mRecyclerView.setAdapter(adapter);
    }

    public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }
}
公共类设置RecyclerAdapter扩展了RecyclerView.Adapter{
私有ArrayList数据集;
语境;
int-total_类型;
TextInputLayout textInputLayoutCome;
text输入布局text输入布局成本;
编辑收入;
编辑成本;
公共资金类型视图持有人(查看项目视图){
超级(项目视图);
textInputLayoutCome=(TextInputLayout)itemView.findViewById(R.id.textInputLayoutCome);
editIncome=(EditText)textInputLayoutCome.findViewById(R.id.editIncome);
textInputLayoutCosts=(TextInputLayout)itemView.findViewById(R.id.textInputLayoutCosts);
editCosts=(EditText)textInputLayoutCosts.findViewById(R.id.editCosts);
}
}
公共静态类SendToMailTypeViewHolder扩展了RecyclerView.ViewHolder{
切换开关发送邮件报告;
公共发送给ILTYPEVIEWHOLDER(查看项目视图){
超级(项目视图);
switchSendMailReport=(Switch)itemviewbyd(R.id.switchSendMailReport);
}
}
公共静态类SendToDriveTypeViewHolder扩展了RecyclerView.ViewHolder{
开关驱动器报告;
公共SendToDriveTypeViewHolder(查看项目视图){
超级(项目视图);
switchDriveReport=(Switch)itemView.findViewById(R.id.switchDriveReport);
}
}
公共设置RecyclerAdapter(ArrayList数据、上下文){
this.dataSet=数据;
this.mContext=上下文;
total_types=dataSet.size();
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图;
开关(视图类型){
案例设置stypemodel.TYPE_发送至邮件:
view=LayoutInflater.from(parent.getContext()).flate(R.layout.type\u send\u to\u mail,parent,false);
将新的SendToMailTypeViewHolder(视图)返回给iltypeviewholder;
案例设置STYPEMODEL.TYPE_发送_至_驱动器:
view=LayoutInflater.from(parent.getContext()).flate(R.layout.type\u send\u to\u drive,parent,false);
返回新的SendToDriveTypeViewHolder(视图);
}
返回null;
}
@凌驾
public int getItemViewType(int位置){
开关(dataSet.get(position).type){
案例4:
返回设置stypemodel.TYPE_SEND_TO_MAIL;
案例5:
返回设置stypemodel.TYPE_SEND_TO_DRIVE;
违约:
返回-1;
}
}
@凌驾
public void onBindViewHolder(final RecyclerView.ViewHolder holder,final int listPosition){
SettingsTypeModel对象=dataSet.get(listPosition);
if(对象!=null){
开关(对象类型){
案例设置stypemodel.TYPE_发送至邮件:
((SendToMailTypeViewHolder)holder.switchSendMailReport.setChecked(false);
((SendToMailTypeViewHolder)holder).switchSendMailReport.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener()){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
如果(已检查){
}否则{
}
}
});
//setChecked(getSwitchSendReportMail());
打破
案例设置STYPEMODEL.TYPE_发送_至_驱动器:
((SendToDriveTypeViewHolder)holder).switchDriveReport.setChecked(false);
((SendToDriveTypeViewHolder)holder).switchDriveReport.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
如果(已检查){
((SendToDriveTypeViewHolder)holder).switchDriveReport.setChecked(false);
}否则{
}
}
});
打破
}
}
}
@凌驾
public int getItemCount(){
返回dataSet.size();
}
}
活动:

public class SettingsRecyclerAdapter extends RecyclerView.Adapter {

    private ArrayList<SettingsTypeModel> dataSet;
    Context mContext;
    int total_types;


    TextInputLayout textInputLayoutIncome;
    TextInputLayout textInputLayoutCosts;
    EditText editIncome;
    EditText editCosts;

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

        textInputLayoutIncome = (TextInputLayout) itemView.findViewById(R.id.textInputLayoutIncome);
        editIncome = (EditText) textInputLayoutIncome.findViewById(R.id.editIncome);

        textInputLayoutCosts = (TextInputLayout) itemView.findViewById(R.id.textInputLayoutCosts);
        editCosts = (EditText) textInputLayoutCosts.findViewById(R.id.editCosts);
        }
    }
    public static class SendToMailTypeViewHolder extends RecyclerView.ViewHolder {

        Switch switchSendMailReport;

        public SendToMailTypeViewHolder(View itemView) {
            super(itemView);
            switchSendMailReport = (Switch) itemView.findViewById(R.id.switchSendMailReport);
        }
    }

    public static class SendToDriveTypeViewHolder extends RecyclerView.ViewHolder {

        Switch switchDriveReport;

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

            switchDriveReport = (Switch) itemView.findViewById(R.id.switchDriveReport);
        }
    }

    public SettingsRecyclerAdapter(ArrayList<SettingsTypeModel> data, Context context) {
        this.dataSet = data;
        this.mContext = context;
        total_types = dataSet.size();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        switch (viewType) {
            case SettingsTypeModel.TYPE_SEND_TO_MAIL:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.type_send_to_mail, parent, false);
                return new SendToMailTypeViewHolder(view);
            case SettingsTypeModel.TYPE_SEND_TO_DRIVE:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.type_send_to_drive, parent, false);
                return new SendToDriveTypeViewHolder(view);
        }
        return null;
    }

    @Override
    public int getItemViewType(int position) {
        switch (dataSet.get(position).type) {
            case 4:
                return SettingsTypeModel.TYPE_SEND_TO_MAIL;
            case 5:
                return SettingsTypeModel.TYPE_SEND_TO_DRIVE;
            default:
                return -1;
        }
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int listPosition) {

        SettingsTypeModel object = dataSet.get(listPosition);
        if (object != null) {
            switch (object.type) {
                case SettingsTypeModel.TYPE_SEND_TO_MAIL:

                    ((SendToMailTypeViewHolder) holder).switchSendMailReport.setChecked(false);
                    ((SendToMailTypeViewHolder) holder).switchSendMailReport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            if (isChecked) {

                            } else {

                            }
                        }
                    });
                    //       switchSendMailReport.setChecked(getSwitchSendReportMail());

                    break;

                case SettingsTypeModel.TYPE_SEND_TO_DRIVE:

                    ((SendToDriveTypeViewHolder) holder).switchDriveReport.setChecked(false);
                    ((SendToDriveTypeViewHolder) holder).switchDriveReport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            if (isChecked) {
                                ((SendToDriveTypeViewHolder) holder).switchDriveReport.setChecked(false);

                            } else {

                            }
                        }
                    });

                    break;
                }
            }
        }

        @Override
        public int getItemCount() {
            return dataSet.size();
        }
     }
public class SettingsActivity extends AppCompatActivity {

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

        ArrayList<SettingsTypeModel> list= new ArrayList<>();
        list.add(new SettingsTypeModel(SettingsTypeModel.TYPE_SEND_TO_MAIL));
        list.add(new SettingsTypeModel(SettingsTypeModel.TYPE_SEND_TO_DRIVE));

        SettingsRecyclerAdapter adapter = new SettingsRecyclerAdapter(list,this);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, OrientationHelper.VERTICAL, false);

        RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recyclerVieww);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        mRecyclerView.setLayoutManager(linearLayoutManager);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        mRecyclerView.setClickable(true);
        mRecyclerView.setAdapter(adapter);
    }

    public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }
}
公共类设置活动扩展了AppCompatingActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout\u设置);
ArrayList=新建ArrayList();
添加(新设置stypemodel(设置stypemodel.TYPE_SEND_TO_MAIL));
添加(新设置stypemodel(设置stypemodel.TYPE_SEND_TO_DRIVE));
SettingsRecyclerAdapter=新的SettingsRecyclerAdapter(列表,此);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(此,OrientationHelper.VERTICAL,false);
RecyclerView mRecyclerView=(RecyclerView)findViewById(R.id.RecyclerViewWW);
mRecyclerView.addItemDecoration(新的DividerItemDecoration(这个,DividerItemDecoration.VERTICAL));
mRecyclerView.setLayoutManager(linearLayoutManager);
setItemAnimator(新的DefaultItemAnimator());
mRecyclerView.setClickable(true);
mRecyclerView.setAdapter(适配器);
}
ActivityResult上的公共void(最终int请求代码、最终int结果代码、最终意图数据){
super.onActivityResult(请求代码、结果代码、数据);
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
}
@凌驾
public void onBackPressed(){
super.onB
  public interface OnAdapterResult {
            public void onAdapterResult(boolean isChecked);
        }
 public SettingsRecyclerAdapter (Context context){
            mContext = context;
            // .. Attach the interface
            try{
                onAdapterResult = (OnAdapterResult) context;
            }catch(ClassCastException ex){

                Log.e("MyAdapter","error"+ ex,);
            }
        }
((SendToMailTypeViewHolder) holder).switchSendMailReport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, 
                         boolean isChecked) {
                            if (isChecked) {
                            onAdapterResult.onAdapterResult(isChecked); \\ here
                            } else {

                            }
                        }
                    });
public class SettingsActivity extends AppCompatActivity implements adepter.OnAdapterResult {
.
.
.


    @Override
        public void onAdapterResult(boolean isChecked) {
            // 
        }

}