public class ItemListDialogFragment extendsBottomSheetDialogFragment {//TODO: Customize parameter argument names
private static final String ARG_ITEM_COUNT = "item_count";privateListener mListener;//TODO: Customize parameters
public static ItemListDialogFragment newInstance(intitemCount) {final ItemListDialogFragment fragment = newItemListDialogFragment();final Bundle args = newBundle();
args.putInt(ARG_ITEM_COUNT, itemCount);
fragment.setArguments(args);returnfragment;
}
@Nullable
@OverridepublicView onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//在这里将view的高度设置为精确高度,即可屏蔽向上滑动不占全屏的手势。
View view = inflater.inflate(R.layout.fragment_item_list_dialog, container, false);
view.setLayoutParams(newViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ScreenUtils.getScreenHeight(getActivity())/ 3 * 2));returnview;
}
@Overridepublic voidonViewCreated(View view, @Nullable Bundle savedInstanceState) {final RecyclerView recyclerView =(RecyclerView) view;
recyclerView.setLayoutManager(newLinearLayoutManager(getContext()));
recyclerView.setAdapter(newItemAdapter(getArguments().getInt(ARG_ITEM_COUNT)));
}
@Overridepublic voidonAttach(Context context) {super.onAttach(context);final Fragment parent =getParentFragment();if (parent != null) {
mListener=(Listener) parent;
}else{
mListener=(Listener) context;
}
}
@Overridepublic voidonDetach() {
mListener= null;super.onDetach();
}public interfaceListener {void onItemClicked(intposition);
}private class ViewHolder extendsRecyclerView.ViewHolder {finalTextView text;
ViewHolder(LayoutInflater inflater, ViewGroup parent) {//TODO: Customize the item layout
super(inflater.inflate(R.layout.fragment_item_list_dialog_item, parent, false));
text=(TextView) itemView.findViewById(R.id.text);
text.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {if (mListener != null) {
mListener.onItemClicked(getAdapterPosition());
dismiss();
}
}
});
}
}private class ItemAdapter extends RecyclerView.Adapter{private final intmItemCount;
ItemAdapter(intitemCount) {
mItemCount=itemCount;
}
@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, intviewType) {return newViewHolder(LayoutInflater.from(parent.getContext()), parent);
}
@Overridepublic void onBindViewHolder(ViewHolder holder, intposition) {
holder.text.setText(String.valueOf(position));
}
@Overridepublic intgetItemCount() {returnmItemCount;
}
}
}