【问题标题】:Add "Select item" on spinner where item comes from server在项目来自服务器的微调器上添加“选择项目”
【发布时间】:2017-08-09 10:16:33
【问题描述】:

我想实现一个微调器,其中项目来自服务器,我想在微调器的第一行添加“选择项目”

这是旋转器

    <Spinner
          android:background="@drawable/spinner_back"
          android:id="@+id/eduMinPart"
          android:layout_width="350dp"
          android:layout_height="50dp"
          android:textSize="18dp"
          style="@style/Base.Widget.AppCompat.Spinner.Underlined"
          android:layout_below="@+id/EducationTV"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="2dp"/> 

这是java代码

  StringRequest strReqests = new StringRequest(Request.Method.GET,EDU_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    String[] arr = response.trim().split(",");
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>
          (EditDetails7.this, android.R.layout.simple_list_item_1, arr);
           adapter.setDropDownViewResource
                  (android.R.layout.simple_spinner_dropdown_item);
           spinEducation.setAdapter(adapter);
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(EditDetails7.this, error.toString(), 
             Toast.LENGTH_LONG).show();
        }
    });
    AppController.getInstance().addToRequestQueue(strReqests);;

我使用了 adapter.add("select Education") 和 prompt 但两者都不起作用。

【问题讨论】:

  • 检查您的 arr 是否为空,我认为您缺少一行 adapter.setDropDownViewResource(....);跨度>
  • 在 arr 的第 0 个位置添加“选择项目”。然后将您的响应添加到同一个数组。
  • @Pallavi 妈妈你能告诉我如何在数组的第 0 位添加“选择项目”

标签: android


【解决方案1】:

这对你有用。

int arraySize = response.trim().split(",").length + 1;
String[] arr = new String[arraySize];
arr[0] = "select Item";
arr = response.trim().split(",");

【讨论】:

  • 我用了这个 String s2 = "Select Item," + response.trim(); arr=s2.trim().split(",");在您的代码中,第 0 个位置需要项目“选择项目”,但是当您覆盖它时 arr=response.trim().split(","); arr 0th 接受第一项响应。
  • 你为什么不试试 ArrayList 而不是 Array??
【解决方案2】:
String temp="select your what ever,"+response;
temp=response.trim().split(",");

【讨论】:

  • 我用了这个 String s2 = "Select Item," + response.trim(); arr=s2.trim().split(",");在您的代码中,第 0 个位置采用项目“选择项目”,但是当您覆盖它时 arr=response.trim().split(","); arr 0th 接受第一项响应。
  • 请多解释一下上面的代码是如何解决问题的
  • @VikasGodiyal 请尝试上面的代码让我知道是否可行。
【解决方案3】:

嘿,你为什么不在适配器中使用ArrayList&lt;String&gt; 而不是Array

示例:

ArrayList<String> arr = new ArrayList<String>(Arrays.asList(response.trim().split(",")));
arr.add(0, "Select Item")
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(EditDetails7.this, android.R.layout.simple_list_item_1, arr);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinEducation.setAdapter(adapter);

注意:

“选择项目”可以从微调器中选择。如果您需要将其作为 Spinner 的标题,那么您需要找到其他解决方案。

【讨论】:

  • 如果我使用此代码并且微调器项目是“选择项目”,那么我将点击提交按钮,所以我需要空白将转到服务器。
  • 这个问题仍然存在
  • 好的.. 这可能会帮助你stackoverflow.com/questions/867518/…
  • 在这个实现之前我使用了 spinner.setPrompt("Select your favorite Planet!");但它不适用于我的微调器
  • 我还有一个想法可以避免这个问题,但我不知道我的想法好不好,但它对我有用。 String s6 = (spinner.equalsIgnoreCase("Select Item") ? "" : spinner);我在向服务器发送数据时使用了此代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多