我有一个listview,它有一个带SeekBar的自定义适配器。视图充气很好,但当我触摸SeekBar并尝试更改值时,它不响应点击,什么也不做,我该如何解决?
list_itemx.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="false"
android:focusable="false"/>
<SeekBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:max="100"
android:progressDrawable="@drawable/seekbar_progress"
android:thumb="@drawable/seekbar_thumb"
android:clickable="false"
android:focusable="false"
/>
</LinearLayout>
适配器中的getView函数
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View view;
if (convertView == null){
view = layoutInflater.inflate(R.layout.dispositivo_list_item, parent, false);
}else{
view = convertView;
}
final int mPosition = position;
holder = new ViewHolder(view);
holder.progress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int value, boolean b) {
changeProgress(mPosition,value);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
holder.name.setClickable(false);
holder.name.setFocusable(false);
holder.progress.setFocusable(false);
holder.mView.setClickable(false);
return view;
}
编辑:我找到了解决方案。我在回调中调用的函数中有一个notifyDataSetChanged。这就是堵塞SeekBar的原因。无论如何,谢谢你的帮助