簡體   English   中英

如何從ArrayAdapter解雇AlertDialog

[英]How to dissmiss AlertDialog from ArrayAdapter

我使用ArrayAdapter通過單選按鈕創建了單選項AlertDialog。 選擇“比率”后,可以關閉該警報對話框嗎? 我在ArrayAdapter類holder.name.setOnClickListener中有OnClick偵聽器,但我不知道該怎么做。

AlertDialog代碼:

Builder builder = new Builder(serveris, useris, paswordas, BuildBuildingsViewActivity.this, USER_AGENT);

                        ArrayList<AvailableBuildings> availableBuildings = builder.checkForPossibleBuildings(pastatas.getBuildingLink());

                        ArrayAdapter<AvailableBuildings> adapter = new AvailableBuildingsAdapter(BuildBuildingsViewActivity.this, R.layout.choice_main, availableBuildings, host, curdid, pastatas.getBuildingLink());

                        new AlertDialog.Builder(BuildBuildingsViewActivity.this)
                        .setSingleChoiceItems(adapter, 0, null)
                        .setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                dialog.dismiss();
                            }
                        })
                        .show();

ArrayAdapter代碼:

public class AvailableBuildingsAdapter extends ArrayAdapter<AvailableBuildings> {

    public DBAdapterBuild db_build;

        public AvailableBuildingsAdapter(Context context, int textViewResourceId,ArrayList<AvailableBuildings> availableBuildings, String host, String curdid, String aiksteles_link) {
            super(context, textViewResourceId, availableBuildings);
            this.context = context;
            this.availableBuildings = new ArrayList<AvailableBuildings>();
            this.availableBuildings.addAll(availableBuildings);
            this.host = host;
            this.curdid = curdid;
            this.aiksteles_link = aiksteles_link;
            db_build = new DBAdapterBuild(context, host);
        }

        private String host;
        private Context context;
        private String curdid;
        private String aiksteles_link;
        private ArrayList<AvailableBuildings> availableBuildings;

        static class ViewHolder {
           RadioButton name;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {

            ViewHolder holder;


            if (convertView == null) {
                LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = vi.inflate(R.layout.choice_row, null);

                holder = new ViewHolder();
                holder.name = (RadioButton) convertView.findViewById(R.id.building_name);
                convertView.setTag( holder );
                holder.name.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        db_build.open();
                        RadioButton name = (RadioButton) v;
                        AvailableBuildings building = (AvailableBuildings) name.getTag();
                        Log.e( "Available: ", ""+building.getAvailable_title()+building.getAvailable_code());
                        Log.e( "Available: ", ""+db_build.insertTitle(1, building.getAvailable_title(), aiksteles_link, curdid, 0, 1, building.getAvailable_type(), "3", building.getAvailable_code()));
                        db_build.close();


                    }
                });
            }  else {
                // view already defined, retrieve view holder
                holder = (ViewHolder) convertView.getTag();
            }

            AvailableBuildings building = availableBuildings.get(position);

            if ( building == null ) {

            }
            holder.name.setText(building.getAvailable_title());
            holder.name.setTag(building);

            return convertView;
        }
    }

我解決了將這個問題傳遞給ArrayAdapter構造函數Dialog對象的問題,然后執行以下操作:

holder.name.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        db_build.open();
                        RadioButton name = (RadioButton) v;
                        AvailableBuildings building = (AvailableBuildings) name.getTag();
                        Log.e( "Available: ", ""+building.getAvailable_title()+building.getAvailable_code());
                        Log.e( "Available: ", ""+db_build.insertTitle(1, building.getAvailable_title(), aiksteles_link, curdid, 0, 1, building.getAvailable_type(), "3", building.getAvailable_code()));
                        db_build.close();
                        dia.dismiss();
                    }
                });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM