2015-08-05 6 views
0

Может кто-нибудь помочь мне с этой проблемой ?. Не удается получить строку «lugar» в моем ListView. Я не знаю, что я сделал не так :(ListAdapter не отображает информацию

Я новичок здесь, а также в разработке программы

Недавно открытый вопрос:.

https://stackoverflow.com/questions/31840052/why-the-result-always-be-null-while-parsing-json-java

Эта проблема решена, но у меня есть новый :(

Java код:.

private class JSONParse extends AsyncTask<String, String, JSONObject> { 

     private ProgressDialog pDialog; 


     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      pDialog = new ProgressDialog(getActivity()); 
      pDialog.setMessage("Espere..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 

     } 

     @Override 
     protected JSONObject doInBackground(String... args) { 

      JsonParser jParser = new JsonParser(); 
      JSONObject json; 

      // Getting JSON from URL 
      json = jParser.getJSONFromUrl("http://example.com/myjson.json"); 

      return json; 
     } 

     @Override 
     protected void onPostExecute(JSONObject json) { 

      pDialog.dismiss(); 

      if(json != null) { 

       try { 
        // obtener arrays 
        JsonArr = json.getJSONArray("json"); 

        for (int i = 0; i < JsonArr.length(); i++) { 

         JSONObject c = JsonArr.getJSONObject(i); 
         String lugar = c.getString("lugar"); 

         // Adding value HashMap key => value 
         HashMap<String, String> map = new HashMap<String, String>(); 
         map.put("lugar", lugar); 

         oslist.add(map); 

         list = (ListView) getView().findViewById(R.id.lista); 

         ListAdapter adapter = new SimpleAdapter(getActivity(), oslist, 
           R.layout.list_item, 
           new String[]{lugar}, new int[]{ 
           R.id.nombre}); 
         list.setAdapter(adapter); 
         list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
          @Override 
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
           Toast.makeText(getActivity(), "You Clicked at " + oslist.get(+position).get("lugar"), Toast.LENGTH_SHORT).show(); 
          } 
         }); 


        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      }else{ 
       Toast.makeText(getActivity(), "json: null", Toast.LENGTH_SHORT).show(); 
      } 
     } 

lista_medios.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <ListView 
     android:id="@+id/lista" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="@dimen/abc_list_item_padding_horizontal_material"> 
    </ListView> 

</RelativeLayout> 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list_item" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/nombre" 
     android:textSize="16dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

, пожалуйста, напишите свой код – Beat

+0

@Beat Извините (я уже изменил) – user5195185

+0

Вы действительно используете http://example.com/myjson.json или этот фиктивный адрес? Дайте нам реальный – poss

ответ

0

Вы должны сделать это:

String[] from = new String[]{ "lugar" }; 
int[] to = new int[]{ R.id.nombre }; 

ListAdapter adapter = new SimpleAdapter(MainActivity.this, oslist, 
           R.layout.list_item, 
           from, to); 

ЕКА должен содержать имя столбцов, в этом случае ключ в HashMap.

+1

Большое вам спасибо. Это решило мою проблему. :) – user5195185

+0

Его мое удовольствие! –

Смежные вопросы