0
我已经TA RecyclerViewAdapter
实现与OnRecyclerItemClicked Listener
这样:RecyclerView使项目从选择到不选择时DialogFragment出现
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);
}
}
我使用状态的XML文件,以模拟按钮被按下如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_main_btn_prs" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@drawable/shape_main_btn_prs" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/shape_main_btn_prs" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/shape_main_btn" android:state_focused="false" android:state_pressed="false"/>
<item android:drawable="@drawable/shape_main_btn"/>
</selector>
我的Activity
实现了点击侦听器,并将其传递给RecycklerViewAdapter的构造函数。 这是处理的点击次数上的按钮在活动中的recyclerview的代码:
@Override
public void onRecyclerItemClicked(View view, int position) {
mAdapter.setSelectedPosition(position);
lastSelectedButtonPosition = position; //value for savedInstance
mAdapter.notifyDataSetChanged();
mRecycler.scrollToPosition(position);
loadFragment(position);
}
还要看position
,我加载在其示出了DialogFragment为了显示加载屏幕的酶活性的片段,直到数据是取材等。 但是在显示DialogFragment后,recyclerview中的按钮不再被按下。 任何人有一个想法可能是错的?
感谢您的快速回答,但没有帮助。 – MeLine