亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

RadioButton 檢查狀態在 RecyclerView 的滾動事件上自動更改

RadioButton 檢查狀態在 RecyclerView 的滾動事件上自動更改

斯蒂芬大帝 2023-04-13 14:05:00
我在 RecyclerView 項目中遇到 RadioButton 問題。根據“類型”,我更改了選中的 RadioButton。但是在加載所有數據之后,當我單擊未選中的單選按鈕時,它會被選中。但是在滾動我剛剛單擊的已選中單選按鈕后,該按鈕未被選中。我想要檢查我剛剛單擊的按鈕。但它不會被檢查。我怎樣才能得到我想要的?誰能幫幫我嗎?。。。。。?!這是我的適配器類:public class AttendanceAdapterLocal extends  RecyclerView.Adapter<AttendanceAdapterLocal.ViewHolder>{    private ArrayList<StudentAttendance> attendanceArrayList;    private Context context;    public AttendanceAdapterLocal(ArrayList<StudentAttendance> attendanceArrayList) {        this.attendanceArrayList = attendanceArrayList;    }    @NonNull    @Override    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_mark_attendance, viewGroup, false);        context = viewGroup.getContext();        return new ViewHolder(view);    }    @Override    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {        final String type = attendanceArrayList.get(i).getType();        final String id = attendanceArrayList.get(i).getId();        final String name = attendanceArrayList.get(i).getName();        final String roll = attendanceArrayList.get(i).getRoll();        viewHolder.setData(name, roll, type, id);        final DatabaseHelper databaseHelper = new DatabaseHelper(context);        final User user = new AccessStorage(context).getUserDetails();        final String userId = user.getUserId();        viewHolder.radioPresent.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (databaseHelper.updateStudentAttendanceData(id, userId, "P", "0") > 0) {                    Toast.makeText(context, "Marked successfully.", Toast.LENGTH_LONG).show();                    viewHolder.radioPresent.setChecked(true);                } else {                    Toast.makeText(context, "Unable to mark attendance.", Toast.LENGTH_LONG).show();                }            }        });
查看完整描述

3 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

單擊單選按鈕使用界面,對傳遞給回收站視圖(內部活動)的原始列表進行必要的更改,然后使用 notifiDataSetChanged() 方法。



查看完整回答
反對 回復 2023-04-13
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

如果您仍然遇到問題,您應該創建一個模型類。



查看完整回答
反對 回復 2023-04-13
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

只是一個小錯誤。在您的 onClick 方法中,在更改狀態時只通知適配器。


 @Override

        public void onClick(View v) {

            if (databaseHelper.updateStudentAttendanceData(id, userId, "P", "0") > 0) {

                Toast.makeText(context, "Marked successfully.", Toast.LENGTH_LONG).show();

                viewHolder.radioPresent.setChecked(true);

            //Notify adapter 

             attendanceArrayList.notify();

            } else {

                Toast.makeText(context, "Unable to mark attendance.", Toast.LENGTH_LONG).show();

            }

        }

我可以看到,您在任何地方都做了同樣的事情。在更改列表中的任何內容時通知適配器很重要。您可以使用 notifyDataSetChanged() 或 notifyItemChanged(selectedPosition);


查看完整回答
反對 回復 2023-04-13
  • 3 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號