2 回答

TA貢獻1155條經(jīng)驗 獲得超0個贊
你正在做一些奇怪的事情,如果可能的話讓它變得簡單。
第 1 步:在您的適配器類中創(chuàng)建一個方法來獲取所選項目
public NewGameCourseItem getSelectedItem() {
return mCourseList.get(selectedPosition);
}
第 2 步:然后修改您的點擊方法,如下所示
mStartGame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NewGameCourseItem item = adapter.getSelecteditem();
Intent intent = new Intent(ActivityNewGame2.this, ActivityGame.class);
/** Also intent selected items: course name and hole number **/
intent.putExtra("COURSENAME", item.getCourseName());
intent.putExtra("HOLESNM", item.getHolesNm());
startActivity(intent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
});
第 3 步:現(xiàn)在修改您的 onCheckedChanged 如下
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
notifyItemChanged(selectedPosition);
selectedPosition = holder.getAdapterPosition();
notifyItemChanged(selectedPosition);
}

TA貢獻1783條經(jīng)驗 獲得超4個贊
在適配器中創(chuàng)建一個類變量
private int selectedPosition = -1; //change -1 to any default position, need to be selected.
修改適配器中的以下功能
@Override
public void onBindViewHolder(@NonNull final NewGameCourseViewHolder holder, final int position) {
final NewGameCourseItem currentItem = mCourseList.get(position);
holder.mRadioButton.setChecked(selectedPosition == position);
holder.mRadioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked) {
int tempSelected = selectedPosition;
selectedPosition = position;
notifyDataSetChanged();
}
}
});
}
在適配器中創(chuàng)建一個新方法,如下所示 -
public int getSelectedItemIndex() {
return selectedPosition;
}
我假設是Activity 類中adapter的變量。NewGameCourseAdapter修改Activity中的按鈕點擊:
mStartGame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int selectedRecyclerItemPosition = adapter.getSelectedItemIndex();
//Calling intent and pass selected item info
Intent intent = new Intent(ActivityNewGame2.this, ActivityGame.class);
/** Also intent selected items course name and hole number **/
intent.putExtra("COURSENAME", mCourseList.get(selectedRecyclerItemPosition).getCourseName());
intent.putExtra("HOLESNM", mCourseList.get(selectedRecyclerItemPosition).getHolesNm());
startActivity(intent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
});
添加回答
舉報