Vấn đề: Tôi có nhiều thanh tìm kiếm (được quản lý bởi RecyclerView.Adapter), khi tôi xem dạng cuộn, và thanh tìm kiếm cụ thể không được hiển thị nữa, tiến trình trong bộ tìm kiếm này tự nó thành 0 (tôi có thể thấy điều này trong OnSeekBarChangeListner). Tôi tự hỏi tại sao.Giá trị thay đổi của Seekbar trong RecyclerView
Hành vi mong đợi: Khi người dùng không thay đổi giá trị bằng cách trượt thanh tìm kiếm, tiến trình sẽ không thay đổi.
Giải pháp thay thế của tôi bây giờ là kiểm tra xem thanh tìm kiếm có hiển thị không và chỉ lưu giá trị.
onBindViewHolder
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int positi
final DMXChannel currentChannel = channels.get(position);
... // Not relevant
else if (holder instanceof ViewHolderSlider) {
((ViewHolderSlider) holder).container.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (listner != null)
listner.onLongItemClicked(currentChannel.getIndex(), v);
return true;
}
});
final ViewHolderSlider holderSlider=((ViewHolderSlider) holder);
((ViewHolderSlider) holder).tvPosition.setText("" + (currentChannel.getIndex() + 1));
int value =currentChannel.getValue();
holderSlider.slider.setProgress(value);
((ViewHolderSlider) holder).tvValue.setText("" + currentChannel.getValue());
((ViewHolderSlider) holder).slider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
holderSlider.tvValue.setText("" + progress);
if(position!=RecyclerView.NO_POSITION) {
if(seekBar.isShown())
currentChannel.setValue(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
ViewHolder của tôi cho seekbars
public static class ViewHolderSlider extends RecyclerView.ViewHolder {
public TextView tvPosition;
public TextView tvValue;
public CardView container;
public VerticalSeekBar slider;
public ViewHolderSlider(View v) {
super(v);
slider= (VerticalSeekBar)v.findViewById(R.id.slider);
Drawable thumb = MyApp.getContext().getResources().getDrawable(R.drawable.ic_add_white_24dp);
slider.setThumb(thumb);
thumb.mutate().setAlpha(0);
container= (CardView)v.findViewById(R.id.rootView);
tvPosition= (TextView) v.findViewById(R.id.tv_channel_number);
tvValue = (TextView) v.findViewById(R.id.tv_value);
}
}
Bất kỳ giải pháp nào cho điều đó? – Orcun