上菜了:
package com.sf.microwarehouse.utils;
import android.app.Dialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.sf.microwarehouse.R;
import com.sf.microwarehouse.activity.skushouhuo.ListForItemCodesAdapter;
import java.util.ArrayList;
import java.util.List;
public class MyDialogListForRecycleview extends DialogFragment {
private ListForItemCodesAdapter listAdapter = null;
private List<String> uniqueCodes = new ArrayList<>();
public ClickCallBack mClickCallBack;
private String code;
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
return super.onCreateDialog(savedInstanceState);
}
public void setData(List<String> codes){
uniqueCodes = codes;
}
public void setCallback(ClickCallBack callback) {
this.mClickCallBack = callback;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_diglog, null);
RecyclerView recyclerView = view.findViewById(R.id.rv_item_69_codes);
//创建布局管理 rv_item_69_codes
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
layoutManager.setOrientation(layoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
listAdapter = new ListForItemCodesAdapter(R.layout.item_code_detail);
recyclerView.setAdapter(listAdapter);
if(uniqueCodes != null && uniqueCodes.size()>0){
listAdapter.setNewData(uniqueCodes);
}
listAdapter.setOnItemClickListener((adapter, view1, position) -> {
code = uniqueCodes.get(position);
if (mClickCallBack != null) {
mClickCallBack.onItemClick(code);
}
}
);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
super.onActivityCreated(savedInstanceState);
//① 设置对话框内的内容为透明
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
//② . 将对话框外的内容设置为透明
Window window = getDialog().getWindow();
WindowManager.LayoutParams windowParams = window != null ? window.getAttributes() : null;
windowParams.dimAmount = 0.0f;
window.setAttributes(windowParams);
}
@Override
public void onResume() {
super.onResume();
//动态设置宽高
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
return super.onCreateAnimation(transit, enter, nextAnim);
}
public interface ClickCallBack {
void onItemClick(String code);
}
}
调用很简单:
//新增弹出列表,先初始化
myDialog = new MyDialogListForRecycleview();
//处理点击事件
myDialog.setCallback(new MyDialogListForRecycleview.ClickCallBack() {
@Override
public void onItemClick(String code) {
ToastUtils.show(code);
myDialog.dismiss();
}
});
在需要展示Dialog的地方
//显示dialog并展示数据
myDialog.show(getSupportFragmentManager(), "dialog");
myDialog.setData(uniqueCodes);