Я создаю приложение, в котором у меня есть радиогруппа с тремя радиокнопками. Что я хочу, так это когда я проверяю переключатель, мне нужно получить значение идентификатора этого переключателя и сохранить его в массиве или базе данных, а затем посчитать значение идентификатора.
Например, у меня есть эта радиогруппа в 19 фрагменте. каждая радиопереключатель имеет значение id. если кнопка выбрана, она получит идентификатор и сохранит его, чтобы я мог посчитать выбранное значение идентификатора.
это дисплей моего степперстоуна
Мой StepFragment
Bundle bundle = this.getArguments();
Log.d("##", "onCreateView: " + bundle.getInt(MyStepperAdapter.CURRENT_STEP_POSITION_KEY)) ;
View view = inflater.inflate(R.layout.fragment_step_fragment_example, container, false);
mRadioGroup = view.findViewById(R.id.radioGroupWrapper);
mRadioGroup.getCheckedRadioButtonId();
DatabaseHelper mDBHelper = new DatabaseHelper(getContext());
Log.d("#######", String.valueOf(bundle.getInt(MyStepperAdapter.CURRENT_STEP_POSITION_KEY)));
final List<Klasifikasi> lk = mDBHelper.getListKlasifikasiByGroup(String.valueOf(Integer.valueOf(bundle.getInt(MyStepperAdapter.CURRENT_STEP_POSITION_KEY)) + 1));
final RadioButton[] rb = new RadioButton[lk.size()];
Log.d("##sz", "onCreateView: " + lk.size()) ;
int[][] states = new int[][] {
new int[] { android.R.attr.state_enabled}, // enabled
new int[] {-android.R.attr.state_enabled}, // disabled
new int[] {-android.R.attr.state_checked}, // unchecked
new int[] { android.R.attr.state_pressed} // pressed
};
int[] colors = new int[] {
Color.BLACK,
Color.BLACK,
Color.BLACK,
Color.BLACK
};
mRadioButton1 = view.findViewById(R.id.checkbox1);
mRadioButton2 = view.findViewById(R.id.checkbox2);
mRadioButton3 = view.findViewById(R.id.checkbox3);
if(lk.size() > 0) {
Klasifikasi kl0 = lk.get(0);
Klasifikasi kl1 = lk.get(1);
Klasifikasi kl2 = lk.get(2);
mRadioButton1.setText(kl0.getKlasifikasi());
mRadioButton2.setText(kl1.getKlasifikasi());
mRadioButton3.setText(kl2.getKlasifikasi());
}
Мой StepperAdapter
public static final String CURRENT_STEP_POSITION_KEY = "CURRENT_STEP_POSITION_KEY";
public MyStepperAdapter(FragmentManager fm, Context context) {
super(fm, context);
}
@Override
public Step createStep(int position) {
final StepFragmentExample step = new StepFragmentExample();
Bundle b = new Bundle();
b.putInt(CURRENT_STEP_POSITION_KEY, position);
step.setArguments(b);
return step;
}
@Override
public int getCount() {
return 19;
}
@NonNull
@Override
public StepViewModel getViewModel(@IntRange(from = 0) int position) {
//Override this method to set Step title for the Tabs, not necessary for other stepper types
return new StepViewModel.Builder(context)
.setTitle("Fragment " + getCount()) //can be a CharSequence instead
.create();
}
ListKlasifikasiAdapter
public ListKlasifikasiAdapter.KlasifikasiViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext());
View view = layoutInflater.inflate(R.layout.item_listklasifikasi, viewGroup, false);
KlasifikasiViewHolder klasifikasiViewHolder = new KlasifikasiViewHolder(view);
klasifikasiViewHolder.setIsRecyclable(false);
return klasifikasiViewHolder;
}
@Override
public void onBindViewHolder(@NonNull KlasifikasiViewHolder klasifikasiViewHolder, int i) {
final List<Klasifikasi> lk = mDBHelper.getListKlasifikasiByGroup(String.valueOf(mKlasifikasiList.get(i).getGroup_index()));
final RadioButton[] rb = new RadioButton[lk.size()];
for (int j = 0; j < lk.size(); j++) {
Klasifikasi kl = lk.get(j);
rb[j] = new RadioButton(mContext);
rb[j].setId(j);
rb[j].setText(kl.getKlasifikasi());
klasifikasiViewHolder.radioGroup.addView(rb[j]);
}
}
class KlasifikasiViewHolder extends RecyclerView.ViewHolder {
private RadioGroup radioGroup;
public KlasifikasiViewHolder(@NonNull View itemView) {
super(itemView);
radioGroup = itemView.findViewById(R.id.radioGroupWrapper);
}
}
MyDatabaseHelper
public List<Klasifikasi> getListKlasifikasiByGroup(String index){
Klasifikasi klasifikasi = null;
List<Klasifikasi> klasifikasiList = new ArrayList<>();
openDatabase();
Cursor cursor = mDatabase.rawQuery("SELECT * FROM klasifikasi k WHERE k.group_index = ? ORDER BY k.kategori_id ASC", new String[] {index});
cursor.moveToFirst();
while (!cursor.isAfterLast()){
klasifikasi = new Klasifikasi(cursor.getInt(0),cursor.getString(1),cursor.getString(2),cursor.getString(3), cursor.getInt(4));
klasifikasiList.add(klasifikasi);
cursor.moveToNext();
}
cursor.close();
closeDatabase();