how to get spinner values in textview

后端 未结 1 1316
一向
一向 2020-12-02 03:00

I am getting json response in alert dialog spinner,now i want user selected items in edittext with comma seperated,but when I run the app i am able to select only one and an

相关标签:
1条回答
  • 2020-12-02 03:42

    Define custom interface which is given callback from multiple item selection dialog.

    public interface MultipleItemSelectListener {
        public void onSelected(String value,String ids);
    }
    

    Custom Multiple item selection dialog method.

    Parameters

    Content : your activity content reference.

    title : dialog title.

    jsonArrayString : your jsonarray response as string.

    MultipleItemSelectListener : custom on item selected listener.

    public void getMultiSelectionDialog(final Context context,final String title, String jsonString, final String value, final MultipleItemSelectListener target) {
    
        final ArrayList<String> values = new ArrayList<String>();
        final ArrayList<String> ids = new ArrayList<String>();
        final String BUSINESS_ID="id";
        final String BUSINESS_NAME="name";
    
        try {
            JSONArray jsonArray = new JSONArray(jsonString);
            int size = jsonArray.length();
            for (int i = 0; i < size; i++) {
                values.add(((JSONObject) jsonArray.get(i)).getString(BUSINESS_NAME).trim());
                ids.add(((JSONObject) jsonArray.get(i)).getString(BUSINESS_ID).trim());
            }
    
        } catch (JSONException e) {
            e.printStackTrace();
        }
    
        final boolean[] selections = new boolean[values.size()];
        final StringBuilder newValue = new StringBuilder();
        final StringBuilder newIds = new StringBuilder();
    
        AlertDialog alert = null;
    
        if (value.length() > 0) {
            String[] oldValue = value.split(",");
            int size = values.size();
            for (int i = 0; i < size; i++) {
                int len = oldValue.length;
                for (int j = 0; j < len; j++) {
                    if (values.get(i).trim().equalsIgnoreCase(oldValue[j].trim())) {
                        selections[i] = true;
                        break;
                    }
                }
            }
        }
    
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setMultiChoiceItems(values.toArray(new CharSequence[values.size()]), selections, new DialogInterface.OnMultiChoiceClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                selections[which] = isChecked;
            }
        });
    
        builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
                int size = selections.length;
                for (int i = 0; i < size; i++) {
                    if (selections[i]) {
                        newValue.append(newValue.length() > 0 ? "," + values.get(i) : values.get(i));
                        newIds.append(newIds.length() > 0 ? "," + ids.get(i) : ids.get(i));
                    }
                }
                target.onSelected(newValue.toString(),newIds.toString());
    
            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                int size = selections.length;
                for (int i = 0; i < size; i++) {
                    if (selections[i]) {
                        newIds.append(newIds.length() > 0 ? "," + ids.get(i) : ids.get(i));
                    }
                }
                target.onSelected(value,newIds.toString());
            }
        });
        alert = builder.create();
        alert.show();
    }
    

    How to getMultiSelectionDialog :

    class LoadBusiness extends AsyncTask<Void,Void,String> {
    
        Context context;
    
        public LoadBusiness(Context context){
            this.context=context;
        }
    
        private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(context);
            pDialog.setMessage("Loading...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
    
        @Override
        protected String doInBackground(Void... params) {
            ServiceHandler sh = new ServiceHandler();
            String jsonStr = sh.makeServiceCall(BUSINESS_URL, ServiceHandler.GET);
            Log.d("Response: ", "> " + jsonStr);
            return jsonStr;
        }
    
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            pDialog.dismiss();
            setTextViewWithMultipleSelectionDialog(context,result);
        }
    }
    
    
      public void setTextViewWithMultipleSelectionDialog(final Context context,final String jsonArrayString){
    
        splang.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getMultiSelectionDialog(context,"Countries",jsonArrayString,splang.getText().toString(),new MultipleItemSelectListener() {
                    @Override
                    public void onSelected(String value) {
                        splang.setText(value);
                    }
                });
            }
        });
     }
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       splang=(TextView)findViewById(R.id.txtvw);
    
       new LoadBusiness(this).execute();
    }
    
    0 讨论(0)
提交回复
热议问题