【问题标题】:How to add a PLEASE SELECT error to a JSON Spinner如何将 PLEASE SELECT 错误添加到 JSON Spinner
【发布时间】:2019-08-19 20:40:41
【问题描述】:

我有一个应用程序,您可以在其中将图像上传到我的公司服务器 我有 2 个用 json 数据填充的微调器,并且微调器中的选定项目被传递给上传 url 的 uri.builder, 我已经看到很多关于在微调器上设置请选择选项的问题,但是我的微调器的请选择选项被编码到我的 JSON 数据中作为一个项目。 现在我想要的是,如果选择了“请选择项目”以提示用户在微调器中选择一个项目,应用程序将给出错误提示

所以总结一下,我的微调器填充了 json 数据,json 数据中的第一项是“请选择”现在我希望在选择“请选择”选项时出现错误消息。

   public class SecondActivity extends AppCompatActivity implements 
  View.OnClickListener {
private final int PICK_IMAGE=12345;
private final int REQUEST_CAMERA=6352;
private static final int REQUEST_CAMERA_ACCESS_PERMISSION=5674;
private Bitmap bitmap;
private ImageView imageView;

String myURL;
Spinner spinner;
Spinner spinner2;
String URL;
String URL2;
ArrayList<String> CategoryName;
ArrayList<String> ClientName;
String Item;
String Item2;
String email;
String clientId;
String pwd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    imageView=findViewById(R.id.imageView);
    Button fromCamera=findViewById(R.id.fromCamera);
    Button fromGallery=findViewById(R.id.fromGallery);
    Button upload=findViewById(R.id.upload);
    CategoryName=new ArrayList<>();
    ClientName=new ArrayList<>();
    spinner=findViewById(R.id.spinner);
    spinner2=findViewById(R.id.spinner2);
    email = getSharedPreferences("MyPrefs", MODE_PRIVATE).getString("name", "");
    clientId= getSharedPreferences("MyPrefs", MODE_PRIVATE).getString("id", "");
    pwd= getSharedPreferences("MyPrefs", MODE_PRIVATE).getString("password", "");
    CheckBox chk =findViewById(R.id.chk1);


    if (chk.isChecked()) {
        Uri.Builder builder=new Uri.Builder();
        builder.scheme("https")
                .authority("www.smartpractice.co.za")
                .appendPath("files-upload-phone-app.asp")
                .appendQueryParameter("MyForm", "Yes")
                .appendQueryParameter("ClientID", clientId)
                .appendQueryParameter("Username", email)
                .appendQueryParameter("Pwd", pwd)
                .appendQueryParameter("Category", Item)
                .appendQueryParameter("ClientName", Item2)
                .appendQueryParameter("NoEmail", "Yes");
        myURL=builder.build().toString();
    } else {
        Uri.Builder builder=new Uri.Builder();
        builder.scheme("https")
                .authority("www.smartpractice.co.za")
                .appendPath("files-upload-phone-app.asp")
                .appendQueryParameter("MyForm", "Yes")
                .appendQueryParameter("ClientID", clientId)
                .appendQueryParameter("Username", email)
                .appendQueryParameter("Pwd", pwd)
                .appendQueryParameter("Category", Item)
                .appendQueryParameter("ClientName", Item2)
                .appendQueryParameter("NoEmail", "Yes");

        myURL=builder.build().toString();
    }


    upload.setOnClickListener(this);
    fromCamera.setOnClickListener(this);
    fromGallery.setOnClickListener(this);
    Uri.Builder builder=new Uri.Builder();
    builder.scheme("https")
            .authority("www.smartpractice.co.za")
            .appendPath("app-categories.asp")
            .appendQueryParameter("MyForm", "Yes")
            .appendQueryParameter("ClientID",clientId )
            .appendQueryParameter("Username",email )
            .appendQueryParameter("Pwd",pwd );
    URL=builder.build().toString();

    Uri.Builder builder2=new Uri.Builder();
    builder2.scheme("https")
            .authority("www.smartpractice.co.za")
            .appendPath("app-clients.asp")
            .appendQueryParameter("MyForm", "Yes")
            .appendQueryParameter("ClientID",clientId )
            .appendQueryParameter("Username",email )
            .appendQueryParameter("Pwd",pwd );
    URL2=builder2.build().toString();
    loadSpinnerData(URL);
    loadSpinnerData2(URL2);

项目选择代码上的微调器 1

   spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            String country=spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
            Toast.makeText(getApplicationContext(), country, Toast.LENGTH_LONG).show();
            Item=spinner.getSelectedItem().toString();
            spinner.getSelectedItemPosition();





        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {


        }
    });

Spinner 2 on itme 选择代码

spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        String country=spinner2.getItemAtPosition(spinner2.getSelectedItemPosition()).toString();
        Toast.makeText(getApplicationContext(), country, Toast.LENGTH_LONG).show();
        Item2=spinner2.getSelectedItem().toString();



    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {


    }




}

}

用于从服务器加载 JSON 数据的微调器 1 代码

   private void loadSpinnerData(String url) {

        RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
        StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {



                try {
                    JSONObject jsonObject=new JSONObject(response);

                    if (jsonObject.getInt("success") == 1) {

                        JSONArray jsonArray=jsonObject.getJSONArray("Name");
                        for (int i=0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject1=jsonArray.getJSONObject(i);

                            String country=jsonObject1.getString("Category");
                            CategoryName.add(country);
                        }
                    }
                    spinner.setAdapter(new ArrayAdapter<>(SecondActivity.this, android.R.layout.simple_spinner_dropdown_item, CategoryName));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        int socketTimeout=30000;
        RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        stringRequest.setRetryPolicy(policy);

        requestQueue.add(stringRequest);


    }

微调器 2 从服务器加载 JSON 数据的代码

private void loadSpinnerData2(String url) {

    RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
    StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {




            try {
                JSONObject jsonObject=new JSONObject(response);

                if (jsonObject.getInt("success") == 1) {

                    JSONArray jsonArray=jsonObject.getJSONArray("Name");
                    for (int i=0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject1=jsonArray.getJSONObject(i);

                        String clientName=jsonObject1.getString("ClientName");
                        ClientName.add(clientName);
                    }
                }
                spinner2.setAdapter(new ArrayAdapter<>(SecondActivity.this, android.R.layout.simple_spinner_dropdown_item, ClientName));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });
    int socketTimeout=30000;
    RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
    stringRequest.setRetryPolicy(policy);

    requestQueue.add(stringRequest);
}

【问题讨论】:

    标签: java android android-studio spinner


    【解决方案1】:

    将以下行添加到您的 onItemSelected 微调器方法的顶部。

      if(i==0){
        ///Here you need to show the error msg for the first item selected
        Log.v("ERROR","Please select an item callded");
    
        //return is used the break the flow of the app so the code below does not run in this case
        return;
    
        }
    

    【讨论】:

      【解决方案2】:

      将您的项目添加到第一个位置。在 Spinner 上添加一个 Item Selected Check Listner 并添加一个检查,如果选择的值是第一个。如果先显示一条消息

      spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
          @Override
          public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
              // your code here
              if(position==0)
                  Toast.makeText(getContext,"Please select a value",Toast.LENGTH_LONG).show()
          }
      
          @Override
          public void onNothingSelected(AdapterView<?> parentView) {
              // your code here
          }
      
      });
      

      【讨论】:

        猜你喜欢
        • 2012-03-31
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        • 1970-01-01
        相关资源
        最近更新 更多