【问题标题】:How to pass data in Adapter to Activity from radio button如何从单选按钮将适配器中的数据传递给活动
【发布时间】:2020-08-23 19:17:59
【问题描述】:

在我的活动中,我有 viewtub 来调用 recycleview 和其他布局 在 recycleview 中,我需要将 skor 从单选按钮插入到主要活动中

喜欢这个

如果我在主布局中选择单选按钮 skor 增加

这个我的绑定我只是使用文本,因为我不知道发送 skor

   package com.sariazhariyah.eassessmentinteraktif;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class sikapadapter extends RecyclerView.Adapter<sikapadapter.ViewHolder> {

    String option[];

    public sikapadapter(String[] option) {
        this.option = option;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.text.setText(option[position]);
        int Radioid = holder.radio.getCheckedRadioButtonId();

    }

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

    public class ViewHolder extends RecyclerView.ViewHolder{
        TextView text;
        RadioGroup radio;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            text = itemView.findViewById(R.id.recytexttampil);
            radio = itemView.findViewById(R.id.radiogroup);
        }
    }
}

这是我使用viewstub的main_activity

    String s1[];
        s1 = getResources().getStringArray(R.array.option);

        ViewStub viewStub = (ViewStub) findViewById(R.id.stub);
        //call layout where contain recycleview
        viewStub.setLayoutResource(R.layout.penilaian_sikap_layout);
        View inflatedView = viewStub.inflate();

        recycle = (RecyclerView) inflatedView.findViewById(R.id.recyclesikap);
        recycle.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recycle.setLayoutManager(layoutManager);
        mAdapter = new sikapadapter(s1);
        recycle.setAdapter(mAdapter);

【问题讨论】:

  • 您可以使用监听器来实现这一点,如果您真的需要帮助,请发布您的整个适配器
  • 我已经将我所有的适配器都插入到问题中,如果我检查单选按钮,我有 RadioGroup...它会增加我主要活动中的 skor

标签: android android-studio android-recyclerview viewstub


【解决方案1】:

首先在适配器内部创建接口:

  interface OnRadioChangeListener{
        void onRadioChange(RadioGroup radioGroup,int checkedId);
    }

然后在适配器中声明监听器,它应该从活动中传递:

private OnRadioChangeListener onRadioChangeListener;
public sikapadapter(String[] option,OnRadioChangeListener onRadioChangeListener) {
    this.option = option;
    this.onRadioChangeListener = onRadioChangeListener;
}

在适配器内的 onBindViewHolder() 方法中:

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.text.setText(option[position]);
    holder.radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if(onRadioChangeListener!=null){
                onRadioChangeListener.onRadioChange(group,checkedId);
            }
        }
    });
    int Radioid = holder.radio.getCheckedRadioButtonId();
}

现在让我们转到您的 mainActivity:

无论你在哪里创建适配器,只需像这样添加监听器,例如:

skipadapter = new skipadapter (option,new skipadapter.OnRadioChangeListener(){
void onRadioChange(RadioGroup group,int checkedId){
//do whatever u wanna do here in your activity
}
});

顺便说一句,skipadapter 不是您应该遵循的命名约定,请将其更改为 SkipAdapter

【讨论】:

  • 我仍然有错误代码,当使用适配器时,mAdapter = new sikapadapter(s1, ......) 我不知道我可以使用哪些数据来插入 onRadionChangelistener
  • 错误消失了,我在主要活动中使用了工具
猜你喜欢
  • 1970-01-01
  • 2019-12-05
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多