java - 如何将 PLEASE SELECT 错误添加到 JSON Spinner

标签 java android android-studio spinner

我有一个应用程序,您可以将图像上传到我公司的服务器 我有 2 个填充了 json 数据的微调器,微调器中的所选项目将传递到 uri.builder 作为上传 url, 我看到了很多关于在微调器上设置“请选择”选项的问题,但是我的微调器的“请选择”选项已作为项目编码到我的 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

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) {


    }




}

}

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

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


    }

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

最佳答案

将以下行添加到 Spinner 的 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;

    }

关于java - 如何将 PLEASE SELECT 错误添加到 JSON Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57556208/

相关文章:

android - gradle 在哪里存储 ANDROID 项目的所有编译类?

java - 如何在Android中不使用ListView/RecyclerView/CardView等来显示已安装的应用程序?

java - 检查拆分字符串的值是否在下面的字符串中

java - 如何使用java在oracle中创建用户定义表(表名在字符串中)

java - new DefaultHttpClient() 出现奇怪的 Java 错误

android - 如何通过蓝牙获取远程设备的序列号?

android - 减少 Android Studio 项目大小

java - 将 'new'放入put方法中,还是使用中间变量,效率更高吗?

android - 向 ListView 添加 header - 我为什么要膨胀它?

android - 图像的自定义裁剪无法正常工作