Android 出现DialogFragment时,RecyclerView使项目从选定变为未选定
我已经通过在RecyclerItemClicked Listener上单击Android 出现DialogFragment时,RecyclerView使项目从选定变为未选定,android,android-recyclerview,Android,Android Recyclerview,我已经通过在RecyclerItemClicked Listener上单击实现了taRecyclerServiceAdapter,方法如下: public class MyRecyclerViewButtonsAdapter extends RecyclerView.Adapter<MyRecyclerViewButtonsAdapter.CustomViewHolder> { private List<String> buttonNames; priva
实现了taRecyclerServiceAdapter
,方法如下:
public class MyRecyclerViewButtonsAdapter extends RecyclerView.Adapter<MyRecyclerViewButtonsAdapter.CustomViewHolder> {
private List<String> buttonNames;
private OnRecyclerItemClicked onRecyclerItemClicked;
private int selectedPosition;
public MyRecyclerViewButtonsAdapter(String[] buttonNamesArr, int currentSelectedPosition, OnRecyclerItemClicked listener) {
this.buttonNames = new ArrayList<>();
this.selectedPosition = currentSelectedPosition;
for (int i = 0; i < buttonNamesArr.length; i++) {
buttonNames.add(i,buttonNamesArr[i]);
}
onRecyclerItemClicked = listener;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
@SuppressLint("InflateParams")
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.button_item, null);
return new CustomViewHolder(view, onRecyclerItemClicked);
}
@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
holder.button.setText(buttonNames.get(position));
holder.button.setPressed(position == selectedPosition);
}
@Override
public int getItemCount() {
return (null != buttonNames ? buttonNames.size() : 0);
}
public int getSelectedPosition() {
return selectedPosition;
}
public void setSelectedPosition(int selectedPosition) {
this.selectedPosition = selectedPosition;
}
class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected Button button;
protected OnRecyclerItemClicked itemClickedListener;
public CustomViewHolder(View view, OnRecyclerItemClicked itemClickedListener) {
super(view);
this.button = (Button) view.findViewById(R.id.button_item);
this.itemClickedListener = itemClickedListener;
this.button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
itemClickedListener.onRecyclerItemClicked(view, getAdapterPosition());
}
}
public interface OnRecyclerItemClicked {
void onRecyclerItemClicked(View view, int position);
}
}
取决于位置
,我在显示DialogFragment的活动中加载一个片段,以显示加载屏幕,直到获取数据,依此类推。
但在显示DialogFragment后,不再按下recyclerview中的按钮。
有人知道什么是错误的吗?创建这样一个POJO类
public class RecyclerViewItem{
String buttonName;
boolean isSelected;
public boolean getSelected(){
return isSelected;
}
public void setSelected(boolean isSelected){
this.isSelected = isSelected;
}
public void setName(String buttonName){
this.buttonName = buttonName;
}
public String getName(){
return buttonName;
}
}
使用此选项填充RecyclerView中的项目。根据所选项目设置isSelected属性。这样,即使列表在两次刷新之间,该项目仍将保持选中状态。感谢您的快速回答,但没有帮助。
@Override
public void onRecyclerItemClicked(View view, int position) {
mAdapter.setSelectedPosition(position);
lastSelectedButtonPosition = position; //value for savedInstance
mAdapter.notifyDataSetChanged();
mRecycler.scrollToPosition(position);
loadFragment(position);
}
public class RecyclerViewItem{
String buttonName;
boolean isSelected;
public boolean getSelected(){
return isSelected;
}
public void setSelected(boolean isSelected){
this.isSelected = isSelected;
}
public void setName(String buttonName){
this.buttonName = buttonName;
}
public String getName(){
return buttonName;
}