当前位置: 首页 > 面试题库 >

如何在TextView中获取微调器值

宗建章
2023-03-14
问题内容

我在警报对话框微调器中得到json响应,现在我希望用户在Edittext中用逗号分隔用户选择的项目,但是当我运行该应用程序时,我只能选择一个并且在我的edittext中它仅显示一项…

public class MainActivity extends Activity {

JSONParser jsonParser = new JSONParser();
JSONArray country_list=null;
private static String BUSINESS_URL = "";

private static final String BUSINESS_ID="id";
private static final String BUSINESS_NAME="name";
ArrayList<HashMap<String,String>> data;
private TextView splang;
private String cname;
private String business_id;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   splang=(TextView)findViewById(R.id.txtvw);

   new LoadBusiness().execute();
}

 class LoadBusiness extends AsyncTask<String, String, ArrayList<HashMap<String,String>>> {

      ArrayAdapter<String> adaptercountry ;
    private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Loading...");
            pDialog.setIndeterminate(false);
           // pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
            pDialog.setCancelable(true);
            pDialog.show();

        }
        protected ArrayList<HashMap<String,String>> doInBackground(String... args) {
            ServiceHandler sh = new ServiceHandler();

            // Making a request to url and getting response
            data = new ArrayList<HashMap<String, String>>();
            String jsonStr = sh.makeServiceCall(BUSINESS_URL, ServiceHandler.GET);

            Log.d("Response: ", "> " + jsonStr);

            if (jsonStr != null) {
                try {

                    country_list = new JSONArray(jsonStr);

                    // looping through All Contacts
                    for (int i = 0; i < country_list.length(); i++) {
                        JSONObject c = country_list.getJSONObject(i);
                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();
                        // adding each child node to HashMap key => value
                        map.put(BUSINESS_ID, c.getString(BUSINESS_ID));
                        map.put(BUSINESS_NAME,c.getString(BUSINESS_NAME));
                        data.add(map);

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("ServiceHandler", "Couldn't get any data from the url");
            }

            return data;
        }
        protected void onPostExecute(ArrayList<HashMap<String,String>> result) {
            super.onPostExecute(result);
            pDialog.dismiss();

            String[] arrConuntry=new String[data.size()];
            for(int index=0;index<data.size();index++){
                      HashMap<String, String> map=data.get(index);
                  arrConuntry[index]=map.get(BUSINESS_NAME);
             }  
             // pass arrConuntry array to ArrayAdapter<String> constroctor :
            adaptercountry = new ArrayAdapter<String>(MainActivity.this,
                                android.R.layout.simple_list_item_multiple_choice,
                                                                      arrConuntry);
            splang.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View w) {
                      new AlertDialog.Builder(MainActivity.this)
                      .setTitle("Select")
                      .setAdapter(adaptercountry, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            splang.setText(adaptercountry.getItem(which).toString());

                             try {

                                cname=country_list.getJSONObject(which).getString("id");
                                 Log.d("Response: ", "> " + cname);

                                 business_id=cname.toString();
                                 System.out.println("Business_id"+business_id);

                            } catch (JSONException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }

                          dialog.dismiss();
                        }
                      }).create().show();
                    }
            });

        }
 }

在此处输入图片说明


问题答案:

定义自定义界面,该界面从多个项目选择对话框中进行回调。

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

自定义多项选择对话框方法。

参量

内容 :您的活动内容参考。

title :对话框标题。

jsonArrayString :您的jsonarray响应作为字符串。

MultipleItemSelectListener :对选定项的侦听 器进行 自定义。

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();
}

如何获取MultiSelectionDialog:

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();
}


 类似资料:
  • 问题内容: 我正在使用NetBeans 7.1在Java中进行编码。我有一个上面带有整数值的微调器,我想知道如何在微调器中获得活动值,这是指用户在程序运行时选择的那个值。在其他方法上使用它。 问题答案: 应该可以。您可以将其投射到,例如 从注reggoodwin:你也应该调用调用之前,以确保与被传播到模型编辑器中手动输入值,否则你将只能得到旧值。 因此,它应该像下面这样,

  • 我想制作一个简单的共享按钮来获取TextView值并共享它,但我不知道怎么做。 代码如下: 而相关的布局是: 我在这里看了文档和一些类似的问题,但找不到我的答案。感谢你对此的帮助。

  • 如何得到TextView的一个活动在RecycleViewAdapter类和TextView不在布局行对于RecycleViewitem.As在RecycleViewAdapter我们覆盖方法 因为它只得到<code>中声明的那些,ViewHolder扩展了RecyclerView。ViewHolder和ViewHolder将仅获取<code>视图中的ui v=充气机。充气(R.layout.ne

  • 问题内容: 我正在尝试从中获取选定的项目字符串。到目前为止,我已经得到了: 这是行不通的,并提供了一个类强制转换异常(我想我可以将a强制转换为继承它的小部件。显然不行!)那么,如何获得选定的a值呢? 问题答案: 要获得微调器的选定值,您可以按照以下示例操作。 创建一个实现AdapterView.OnItemSelectedListener的嵌套类。这将提供一个回调方法,当从微调器中选择一个项目时,

  • 在我的应用程序中,我需要获取微调器的值。例如,我有一个用string-array (strings.xml)填充的微调器“city ”,用户在微调器中选择一个值,例如“faade du poste extérieur ”,我必须以与“faade du poste extérieur”值链接的id形式检索微调器的值。 例如,当用户选择“Façade du poste extérieur”时,如何检索

  • 大家好,我得到了一个代码,我为我的项目,代码是得到心跳传感器的值从Arduino到我的android手机使用蓝牙。到目前为止,它进行得很好,它可以毫无问题地将价值发送到我的应用程序。但现在的问题是,我想得到它的值,这样我就可以用我的算法来处理它,但我现在似乎陷入了困境。