2014-10-18 4 views
0

Я пытаюсь получить значение JSON с помощью EditText.JSON Get Value by Edittext

Сначала у меня была путаница исключений nullpointer, решила это. Но теперь моя функция просто не работает. Обертывание моего мозга над этим ...

Я попытался создать EditText, получить это значение в String и передать его объекту JSON. Не знаю, что я делаю неправильно ... Или я что-то забываю?

public class MyActivity extends Activity { 
    TextView uid; 
    TextView name1; 
    TextView email1; 
    EditText edt; 
    Button Btngetdata; 

    //URL to get JSON Array 
    private static String url = "*"; 
    //JSON Node Names 
    private static final String TAG_TAG = "tag"; 
    private static final String TAG_ID = "id"; 
    private static final String TAG_LAST_NAME = "last_name"; 
    private static final String TAG_EMAIL = "country"; 

    JSONArray user = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my); 
     Btngetdata = (Button)findViewById(R.id.getdata); 
     edt = (EditText)findViewById(R.id.edittext); 
     Btngetdata.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       new JSONParse().execute(); 
      } 
     }); 
    } 
    private class JSONParse extends AsyncTask<String, String, JSONObject> { 
     private ProgressDialog pDialog; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      uid = (TextView)findViewById(R.id.uid); 
      name1 = (TextView)findViewById(R.id.name); 
      email1 = (TextView)findViewById(R.id.email); 

      pDialog = new ProgressDialog(MyActivity.this); 
      pDialog.setMessage("Getting Data ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     @Override 
     protected JSONObject doInBackground(String... args) { 
      JSONParser jParser = new JSONParser(); 
      // Getting JSON from URL 
      JSONObject json = jParser.getJSONFromUrl(url); 
      return json; 
     } 
     @Override 
     protected void onPostExecute(JSONObject json) { 
      pDialog.dismiss(); 
      try { 
       // Getting JSON Array 
       user = json.getJSONArray(TAG_TAG); 
       JSONObject c = user.getJSONObject(0); 



       String xyz = edt.getText().toString(); 
       // Storing JSON item in a Variable 
       String id = c.getString(TAG_ID); 
       String name = c.getString(TAG_LAST_NAME); 
       String email = c.getString(TAG_EMAIL); 
       //Set JSON Data in TextView 
       uid.setText(id); 
       name1.setText(name); 
       email1.setText(email); 
       edt.setText(xyz); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

{ "тег": [{ "ID": "1", "first_name": "Филипп", "last_name": "Портер", "электронная почта": "[email protected] », "страна": "Китай", "ip_address": "26.83.255.206"}, { "ID": "2", "first_name": "Нэнси", "last_name": "Мартин", "электронная почта": "[email protected]", "страна": "Колумбия", "ip_address": "160.93.80.1"}, { "ID": "3", "first_name": "Энн", "last_name": "Peterson », "электронная почта": "[email protected]", "страна": "Китай", "ip_address": "251.254.74.162"}, { "ID": "4", "first_name": "Рахиль", "last_name": "Кларк", "электронная почта": "[email protected]", "страна": "Бразилия", "ip_address": "58.218.248.5"}, { "ID": "5", "first_name ":" Вереск», "last_name": "Burton", "электронная почта": "[email protected]", "страна": "Эфиопия", "ip_address": "244.69.119.16"}, { "ID": "6", "first_name": "Рут", "last_name": "Дорожка", "ЕМА иль ":" [email protected]», "страна": "Бразилия", "ip_address": "18.173.102.54"}, { "ID": "7", "first_name": "Эндрю", "last_name" : «Turner», «email»: «[email protected]», «страна»: «Соединенные Штаты», «ip_address»: «13.119.240.234»}, {«id»: «8», «first_name»: "Ванда", "last_name": "Медина", "электронная почта": "[email protected]", "страна": "Нидерланды", "ip_address": "151.139.21.237"}, { "ID": «9», «first_name»: «Robert», «last_name»: «Elliott», «email»: «[email protected]», «страна»: «Соединенные Штаты», «ip_address»: «34.200.249.109», }, { "ID": "10", "first_name": "Кевин", "last_name": "Харрисон", "электронная почта": "страна" "[email protected]",: "Бразилия", "ip_address" : "106.84.164.86"}]}

public class JSONParser { 
    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 
    // constructor 
    public JSONParser() { 
    } 
    public JSONObject getJSONFromUrl(String url) { 
     // Making HTTP request 
     try { 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "n"); 
      } 
      is.close(); 
      json = sb.toString(); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 
     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 
     // return JSON String 
     return jObj; 
    } 
} 

РЕДАКТИРОВАТЬ


JSONObject c = user.getJSONObject(Integer.parseInt(xyz)); 

Я Модифицированный к этому, им получить ответ, отличный по умолчанию 1, когда базовое значение было getJSONObject (0), но теперь им ввод 1 и им получать 2, ввод 4 получая 5 ..

Кто-нибудь знает, как решить эту проблему?

+1

вы могли бы разместить тур JSON? возможно, вы не получаете правильные значения, так как для представлений кажется ok – zozelfelfo

+0

Я просто добавил json –

+0

uid = (TextView) findViewById (R.id.uid); name1 = (TextView) findViewById (R.id.name); email1 = (TextView) findViewById (R.id.email); переместить это в oncreate –

ответ

0

Для конкретной позиции попробовать, как этот

int positionToShow = Integer.parseInt(edt.getText().toString()) - 1; 
user = json.getJSONArray(TAG_TAG); 
for(int i = 0; i < user.length(); i++) { 
    if(positionToShow == i) { 
     JSONObject c = user.getJSONObject(i); 
     // Storing JSON item in a Variable 
     String id = c.getString(TAG_ID); 
     String name = c.getString(TAG_LAST_NAME); 
     String email = c.getString(TAG_EMAIL); 
     uid.setText(id); 
     name1.setText(name); 
     email1.setText(email); 
    }  
} 
+0

Это ничего не возвращает –

+0

положить 'System.out.print (String.valueOf (list.size())) 'в конце вне' for' * loop *. Если оно имеет значение '>' 0, то u имеет каждое значение u want. – kId

+0

Где я должен это поставить? за списком.add? –

0

Если вы пытаетесь разобрать весь массив JSON затем использовать this.In проводке выполнить

List<String> allid = new ArrayList<String>(); 
JSONArray obj= jsonResponse.getJSONArray("tag"); 
for (int i=0; i<obj.length(); i++) { 
    JSONObject actor = cast.getJSONObject(i); 
    String id= actor.getString("id"); 
    allNames.add(id); 
} 

Затем вы можете использовать для цикла для получения идентификатора в списке соответственно.

В противном случае вы можете сделать это синтаксический Использование Gson библиотеки (вы можете скачать библиотеку Gson here Просто создать класс в пакете

public class DetailArray { 
    public boolean status; 
    public List<Detail_User> details; 

    public class Detail_User { 
     public String id; 
     public String first_name; 
     public String last_name; 
     public String email; 
     public String country; 
    } 
} 

В вашем посте выполнить

Где ответ ответ JSON

DetailArray detail1 = (new Gson()).fromJson(response.toString(), 
       DetailArray.class); 

Теперь Предположим, если вы хотите установить имена в списке, то

//return a arraylist 
private ArrayList<String> getName(DetailArray detail) { 
    ArrayList name = new ArrayList<String>(); 

     for (int i=0;i< detail.details.size();i++) { 
     name.add(splitStr[i]); 
     } 
    return names; 
} 

Установка адаптера массива и установив его в список

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        this, 
        android.R.layout.simple_list_item_1, 
        getName(detail); 
     listview.setAdapter(arrayAdapter); 
0

я уже синтаксический анализ вашего JSON ... акк с номером, введенным ..и он показывает точный результат .... см это ....

final EditText no=(EditText)findViewById(R.id.editText1); 
    final Button click=(Button)findViewById(R.id.button1); 
    click.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View arg0) 
     { 
      try 
      { 
       Toast.makeText(MainActivity.this, no.getText().toString(), 0).show(); 
       HttpClient client=new DefaultHttpClient(); 
       HttpGet request=new HttpGet("http://192.168.0.30/test.js"); 
       HttpResponse response=client.execute(request); 

       HttpEntity entity=response.getEntity(); 
       String json=EntityUtils.toString(entity); 

       JSONObject j1=new JSONObject(json); 
       JSONArray ja1=j1.getJSONArray("tag"); 
       JSONObject j2=ja1.getJSONObject(Integer.parseInt(no.getText().toString())-1); 

       Toast.makeText(MainActivity.this, j2.getString("first_name").toString() , 0).show(); 

       entity.consumeContent(); 
      } 
      catch(Exception e) 
      { 
       e.getStackTrace(); 
       Toast.makeText(MainActivity.this, e.toString() , 0).show(); 
      } 
     } 
    });