BaseQuickAdapter解决滑动错乱问题 滑动错乱是因为复⽤了适配器⾥⾯的ConverView复⽤导致的 那如何解决呢
我就直接说如何解决把
1⼀般适配器是为了展⽰数据 有数据就说明有实体类 所以我们要在实体类进⾏操作
2在实体类的属性 定义⼀个变量
private String name; //原有的
private int checkNum; //我们创建的
然后get set
实体类全部代码
ample.de;
public class RadioBase {
private String name;
private int checkNum;
@Override
public String toString() {
return "RadioBase{" +
"name='" + name + '\'' +
", checkNum=" + checkNum +
'}';
android radiogroup}
public RadioBase() {
}
public RadioBase(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCheckNum() {
return checkNum;
}
public void setCheckNum(int checkNum) {
this.checkNum = checkNum;
}
}
3 开始在适配器进⾏操作 解决滑动错乱
我们就拿radiobutton 进⾏演⽰
这是xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="schemas.android/apk/res/android" android:layout_width="match_parent"
android:layout_weight="3"
android:background="#4086"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:textSize="15dp"
android:text="歌曲名字"
android:id="@+id/musicname"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_below="@id/musicname"
android:weightSum="3"
android:layout_height="wrap_content">
<RadioGroup
android:layout_below="@id/musicname"
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="2"
android:orientation="horizontal"
android:weightSum="2">
<RadioButton
android:id="@+id/up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="上⼀⾸" />
<RadioButton
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="下⼀⾸" />
</RadioGroup>
<Button
android:layout_toRightOf="@id/group"
android:id="@+id/play"
android:text="播放"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
记得⽤group包裹
5操作
//我这样获取到这个控件虽然有点⿇烦
RadioGroup group= View(up);
group.setOnCheckedChangeListener(null); //先把点击事件取消
group.clearCheck(); //这⼀步很重要,取消所有的点击效(Radiobutton)
//根据实体类⾃⼰定义的变量判断选择哪⼀个
switch (CheckNum()){
case 1:
group.check(R.id.up);
break;
case 2:
group.check();
break;
}
//根据点击事件给实体类赋值
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int p=0;
switch (checkedId){
case R.id.up:
p=1;
break;
case :
p=2;
break;
}
item.setCheckNum(p); //给实体类赋值
}
});
这样就解决了
适配器所有代码
ample.ypc.musictext.adapter;
import android.support.annotation.Nullable;
import android.widget.RadioGroup;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
ample.ypc.musictext.R;
ample.de.RadioBase;
import java.util.List;
public class RecyclerAb extends BaseQuickAdapter<RadioBase,BaseViewHolder> {
public RecyclerAb(@Nullable List<RadioBase> data) {
super(R.layout.musicitem,data);
}
@Override
protected void convert(BaseViewHolder helper, final RadioBase item) {
RadioGroup group= View(up);
group.setOnCheckedChangeListener(null);
group.clearCheck();
switch (CheckNum()){
case 1:
group.check(R.id.up);
break;
case 2:
group.check();
break;
}
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int p=0;
switch (checkedId){
case R.id.up:
p=1;
break;
case :
p=2;
break;
}
item.setCheckNum(p);
}
});
helper.addOnClickListener(R.id.play);
helper.addOnClickListener(R.id.up);
helper.addOnClickListener();
helper.setText(R.id.Name())
;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论