android:在recyclerview中遇到Switch.OnCheckChangedListener问题

时间:2016-10-26 13:19:15

标签: android android-recyclerview

所以我有一个recyclerview,每个项目都有一个Switch按钮。切换按钮的状态取决于sharedpreferance中的数据,我在onBindViewHolder方法中检查了这些数据。

正如您所知,每个项目在滚动时都会循环使用,并且每次都会调用onBindviewHolder,因此,我无法控制Switch.OncheckChangedListener因为切换状态每秒都在变化(滚动时)

首先使用OnClickListener似乎是一个好主意,但是当用户滑动以切换切换时它会失败。

1 个答案:

答案 0 :(得分:0)

有些可以解决,它可能工作与否,但在getView()方法调用期间,在适配器的Switch.OncheckChangedListener方法中给出一个标记为true,如果标志为false则执行逻辑,否则设置标志为false。 e.g

boolean isRecycleViewCall = false;
getView() {
isRecycleViewCall = true;
}
Switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(!isRecycleViewCall) {
                   //your code
                } else {
                   isRecycleViewCall = false;
                }     
            }
        });