2013-05-19 2 views
0

У меня есть сценарий здесь, я хочу, чтобы передать нужный объект JSON на элементе списка щелчке в моих ниже активностяхпередавая объект JSON в другую деятельность по элементу списка нажмите

activity alldeals

предположу, когда я нажимаю deal 2 Второй объект json из jArray должен быть передан в намерение, и мое следующее действие должно получить его.

, но проблема здесь в том, что при нажатии любого из элементов списка следующее действие получает объект json по последнему индексу final deal activity.

вот мой код из alldeals.java

try{ 
      jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
        json_data = jArray.getJSONObject(i); 

        Log.i("log_tag","dealid: "+json_data.getString("deal_id")+ 
          ", hotel name: "+json_data.getString("hotel_name")+ 
          ", location: "+json_data.getString("location")+ 
          ", website: "+json_data.getString("website") 
        ); 

      } 

      json_data=new JSONObject(); 
      String[] data=new String[jArray.length()]; 
      planetList = new ArrayList<String>(); 
       for(int i=0;i<jArray.length();i++) 
       { 
        json_data= jArray.getJSONObject(i); 
        data[i]=json_data.getString("deal_id"); 
        Log.i("log_tag", "string "+data[i]); 
        planetList.addAll(Arrays.asList("Deal "+ (i+1))); 
        listAdapter = new ArrayAdapter<String>(this, R.layout.listrow, planetList); 
        runOnUiThread(new Runnable() { 
         public void run() { 
          list.setAdapter(listAdapter); 
         } 
        }); 
       } 
       list.setOnItemClickListener(new OnItemClickListener() { //where to put this piece of code??? 

        public void onItemClick(AdapterView<?> arg0, View arg1, 
          final int arg2, long arg3) { 

        Intent intent = new Intent(context,Finaldeal.class); 
        intent.putExtra("deal", json_data.toString()); 
        startActivity(intent);          
        } 

       }); 

    } 
    catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 

я знаю, для того, чтобы решить эту проблему, я должен поставить свою list.setOnItemClickListener() в нужном месте, но я запутался, где поставить его, так что, когда я нажимаю на deal1 1-й объект JSON будет передан намерению

ответ

3

вы можете передать JsonObject из JsonArray согласно пункту ListView щелкнул позиции как:

list.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> arg0, View arg1, 
        final int arg2, long arg3) { 
     if(!jArray.isNull(arg2)){ 
      Intent intent = new Intent(context,Finaldeal.class); 
      intent.putExtra("deal", jArray.optJSONObject(arg2).toString()); 
      startActivity(intent);          
     } 
     } 

    }); 

В настоящее время вы передаете json_data, которые всегда содержат последнюю JSONObject из JSONArray, когда для завершения выполнения цикла

+0

gr8 Thanx ... он работал –

0

Если вы хотите быть более гибкими, вы можете поместить данные в формате JSON вы пройдете в ArrayList и get() данные, которые вы хотите проходить автоматически в зависимости от пункта щелкнул следующим образом:

ArrayList<String> jsonList = new ArrayList<String>(); 
jsonList.add(jsonDataForFirstListitem); // JSON data in String form 
jsonList.add(jsonDataForSecondListitem); 
// And so on... 

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

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

list.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> adapter, View view, 
         final int pos, long id) { 

       Intent intent = new Intent(context,Finaldeal.class); 
       String jsonData = jsonList.get(pos); 
       intent.putExtra("deal", jsonData); 
       startActivity(intent);          
       } 

      }); 
+0

: я думаю, вы поняли мой вопрос ответ на ρяσѕρєя K является то, что я хотел ... но в любом случае спасибо за обратить внимание –

+0

Да, вроде понял, так что я обновил свой ответ. Без проблем. :) – Krauxe

0

Я знаю его слишком поздно, чтобы отправить эту answere, но ваш вопрос рейтинг на 1 позиции в Google поисковой системы, так что если кто-то не найти решение, то может быть мой answere помочь им. Для передачи данных JSon на другой вид деятельности в соответствии с положением Listview:

ли это внутри OnItemClick вам нужно скопировать этот код:

JSONObject SelectedItem = (yourjsonresponse) .getJsonObject (положение);

и то же, что и для JSONArray.

затем передайте SelectedItem.toString в своем намерении.

Примечание: yourjsonresponse - это ваш основной ответ API, который может быть jsonobject или jsonarray.

Спасибо

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