首页 > 解决方案 > 如何使用edittext验证json数组

问题描述

这是我的 android 代码,我想验证我从 json 中获取的 pincode,所以我添加了一个EditTextand Button,但我不知道在哪里实现以及如何实现。

根据下面的代码,我从 json 文件中得到了一堆 pincode,它打印在ListView. 现在会有 aEditText和 a Button,当我输入我获取的任何密码时,它应该给我一个敬酒trueor false

public class MainActivity extends AppCompatActivity {

    private String TAG = MainActivity.class.getSimpleName();

    private ProgressDialog pDialog;
    private ListView lv;

    Button bt;
    EditText et;

    private static String url = "http://52.206.14.188:8080/Configuration";

    ArrayList<HashMap<String, ArrayList<String>>> contactList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        contactList = new ArrayList<HashMap<String, ArrayList<String>>>();

        lv = (ListView) findViewById(R.id.list);

         bt = (Button)findViewById(R.id.check);
         et = (EditText)findViewById(R.id.val);

        new GetContacts().execute();
    }

    private class GetContacts extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Please wait...");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {
            HttpHandler sh = new HttpHandler();

            String jsonStr = sh.makeServiceCall(url);

            Log.e(TAG, "Response from url: " + jsonStr);

            if (jsonStr != null) {
                try {

                    JSONArray Source = new JSONArray(jsonStr);
                    JSONObject config = Source.getJSONObject(6);
                    JSONObject configVal = new JSONObject(config.getString("configurationVal"));
                    JSONArray areas = configVal.getJSONArray("availableAreas");
                    ArrayList<String> pincodes = new ArrayList<String>();
                    for (int i = 0 ; i < areas.length(); i++) {
                        JSONObject area = areas.getJSONObject(i);
                        pincodes.add(area.getString("pincode"));

                        HashMap<String, ArrayList<String>> contact = new HashMap<>();
                        contact.put("pincode", pincodes);
                        contactList.add(contact);

                    }

                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(),
                                    "Json parsing error: " + e.getMessage(),
                                    Toast.LENGTH_LONG)
                                    .show();
                        }
                    });

                }
            }

            return null;

        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (pDialog.isShowing())
                pDialog.dismiss();

            ListAdapter adapter = new SimpleAdapter(
                    MainActivity.this, contactList,
                    R.layout.list_item, new String[]{"pincode"}, new int[]{R.id.title});
            lv.setAdapter(adapter);
        }
    }
}

标签: androidarraysjson

解决方案


当用户按下按钮时,您需要检查用户所做的输入是否存在于您的列表中。

bt.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        String input = et.getText();
        if(contactList.contains(input)) {
            Toast.makeText(getApplicationContext(),
                                "Yes",
                                Toast.LENGTH_LONG)
                                .show();
        } else {
                   Toast.makeText(getApplicationContext(),
                                "No",
                                Toast.LENGTH_LONG)
                                .show();
        }
    }
});

编辑:根据您的要求编辑您的代码:

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import com.facebook.stetho.server.http.HttpHandler;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;

import tv.accedo.airtel.wynk.R;

public class MainActivity extends AppCompatActivity {

    private String TAG = MainActivity.class.getSimpleName();

    private ProgressDialog pDialog;
    private ListView lv;

    Button bt;
    EditText et;

    private static String url = "http://52.206.14.188:8080/Configuration";

    ArrayList<HashMap<String, ArrayList<String>>> contactList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        contactList = new ArrayList<HashMap<String, ArrayList<String>>>();

        lv = (ListView) findViewById(R.id.list);

        bt = (Button)findViewById(R.id.check);
        et = (EditText)findViewById(R.id.val);

        new GetContacts().execute();
    }

    private class GetContacts extends AsyncTask<Void, Void, Void> {
        ArrayList<String> pincodes = new ArrayList<String>();
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Please wait...");
            pDialog.setCancelable(false);
            pDialog.show();
            et.setEnabled(false);
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            HttpHandler sh = new HttpHandler();

            String jsonStr = sh.makeServiceCall(url);

            Log.e(TAG, "Response from url: " + jsonStr);

            if (jsonStr != null) {
                try {

                    JSONArray Source = new JSONArray(jsonStr);
                    JSONObject config = Source.getJSONObject(6);
                    JSONObject configVal = new JSONObject(config.getString("configurationVal"));
                    JSONArray areas = configVal.getJSONArray("availableAreas");
                    for (int i = 0 ; i < areas.length(); i++) {
                        JSONObject area = areas.getJSONObject(i);
                        pincodes.add(area.getString("pincode"));
                         HashMap<String, ArrayList<String>> contact = new HashMap<>();
                    contact.put("pincode", pincodes);
                    contactList.add(contact);
                    }

                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(),
                                    "Json parsing error: " + e.getMessage(),
                                    Toast.LENGTH_LONG)
                                    .show();
                        }
                    });

                }
            }

            return null;

        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            et.setEnabled(true);

            if (pDialog.isShowing())
                pDialog.dismiss();

            ListAdapter adapter = new SimpleAdapter(
                    MainActivity.this, contactList,
                    R.layout.list_item, new String[]{"pincode"}, new int[]{R.id.title});
            lv.setAdapter(adapter);


            bt.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    String input = et.getText().toString().trim();
                    if(pincodes.contains(input)) {
                        Toast.makeText(getApplicationContext(),
                                "Yes",
                                Toast.LENGTH_LONG)
                                .show();
                    } else {
                        Toast.makeText(getApplicationContext(),
                                "No",
                                Toast.LENGTH_LONG)
                                .show();
                    }
                }
            });
        }
    }
}

推荐阅读