Android 如何使用GridLayout创建对话框?

Android 如何使用GridLayout创建对话框?,android,dialog,android-gridlayout,Android,Dialog,Android Gridlayout,如何创建对话框,该对话框使用GridLayout,当用户单击此布局的项目,然后单击“选择”按钮时。GridLayout项由一个ImageView组成。如何实现此对话框?1-制作所需的自定义布局 2-使myDialog类扩展DialogFragment并使其膨胀您所做的布局 3-在片段中添加所需的功能 但我使用的是gridview,gridlayout更简单,但我建议使用gridview 这是对话课 public class myDialog extends DialogFragment impl

如何创建对话框,该对话框使用GridLayout,当用户单击此布局的项目,然后单击“选择”按钮时。GridLayout项由一个ImageView组成。如何实现此对话框?

1-制作所需的自定义布局

2-使myDialog类扩展DialogFragment并使其膨胀您所做的布局

3-在片段中添加所需的功能

但我使用的是gridview,gridlayout更简单,但我建议使用gridview

这是对话课

public class myDialog extends DialogFragment implements dis_listener {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.my_dialog_layout,container,false);
    GridView gv = view.findViewById(R.id.dialog_grid);

    grid_adapt adapt = new grid_adapt(getActivity(),this);
    gv.setAdapter(adapt);
    return view;



}
@Override
public void listen() {
    this.dismiss();
}
}
电网适配:-

public class grid_adapt extends BaseAdapter {
private Context cxt;
//pass the data you want
//private ArrayList<Integers> imgs
private dis_listener img_dismiss;
grid_adapt(Context context,dis_listener dismisser){
    this.cxt = context;
    this.img_dismiss = dismisser;
}
@Override
public int getCount() {
    //return the data length
    //return imgs.length
    return 3;

}

@Override
public Object getItem(int position) {
    //return imgs.get(position);
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    viewHolder vh;
    if(convertView == null) {
        convertView= LayoutInflater.from(cxt).inflate(R.layout.grid_item, parent, false);
        vh = new viewHolder(convertView);
        convertView.setTag(vh);

    }else{
        vh = (viewHolder) convertView.getTag();
    }
    vh.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(cxt,"Open",Toast.LENGTH_LONG).show();
        }
    });
     vh.img.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            img_dismiss.listen();
        }
    });
    return convertView;
}
static class viewHolder{
    private Button button;
    private ImageView img;
    viewHolder(View view){
        button = view.findViewById(R.id.dialog_item_button);
        img = view.findViewById(R.id.img);
    }

}
公共类网格适配器{
私有上下文cxt;
//传递你想要的数据
//私人ArrayList imgs
私密的失聪听者被解雇;
网格自适应(上下文,dis_侦听器dismisser){
this.cxt=上下文;
this.img_dismisse=解雇者;
}
@凌驾
public int getCount(){
//返回数据长度
//返回imgs.length
返回3;
}
@凌驾
公共对象getItem(int位置){
//返回imgs.get(位置);
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
convertView=LayoutFlater.from(cxt).充气(R.layout.grid_项,父项,false);
vh=新的视窗支架(convertView);
convertView.setTag(vh);
}否则{
vh=(viewHolder)convertView.getTag();
}
vh.button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(cxt,“Open”,Toast.LENGTH_LONG).show();
}
});
vh.img.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
听我说;
}
});
返回视图;
}
静态类视窗夹{
私人按钮;
私有图像视图img;
视图保持器(视图){
按钮=view.findViewById(R.id.dialog\u item\u按钮);
img=view.findviewbyd(R.id.img);
}
}
}

接口只有一个名为listen的方法

结果:

GridView GridView=新的GridView(此);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,您的_list));
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//在这里做点什么
}
});
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setView(gridView);
builder.setTitle(“带网格的警报框”);
builder.show();
试试这个,这个基于单列数据网格

如果你想要这个图像,请按照这个,

我不知道如何为Dialog创建自定义布局,Dialog具有GridLayout以及如何添加功能。我需要代码来理解这个…请帮帮我!当我点击图标时,如何关闭对话框?但我的对话框不是网格,它保存项目。这是一个简单的列表
GridView gridView = new GridView(this);
gridView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, your_list));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // do something here
            }
 });
 AlertDialog.Builder builder = new AlertDialog.Builder(this);
 builder.setView(gridView);
 builder.setTitle("ALERT BOX WITH GRID");
 builder.show();