2015-08-31 3 views
-1

Это мой код:Как получить значение из класса JSON массива

for (int i = 0; i < response.length(); i++) { 
    try { 
      JSONObject obj = response.getJSONObject(i); 
      Movie movie = new Movie(); 
      movie.setTitle(obj.getString("name")); //get json array name 

      }    
      // adding movie to movies array 
      movieList.add(movie); 

     } 

и я click listener как это, когда список onclick:

listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
           long arg3) { 
     //update json array name to sqlite 

      db.updateUser(XXXXXXXXXXXXXX); // this value i want get from json array movie.setTitle() 

      Intent i = new Intent(getApplicationContext(), MainActivity.class); 



      startActivity(i); 
     } 
    }); 

Как я могу получить значение из jsonarray и использовать его toclicklistener?

Кто-то предложил использовать класс компонента, но я не уверен, что я понимаю, как это сделать ..

+0

tq @whereisSQL ... мой английский так плохо – raregroove

+0

где jsonArray находится в одном классе? –

+0

нет ... его разного класса .. – raregroove

ответ

0

в своем классе, который имеет JsonArray

//create an ivar 
private static Movie myMovie // <- this is the value you want. 
// then make a method 
public static Moive getMovie(){return MyJSONArrayClass.myMovie} 

// modify your json Class to do this 

for (int i = 0; i < response.length(); i++) { 
try { 
     JSONObject obj = response.getJSONObject(i); 
     myMovie = new Movie(); 
     movie.setTitle(obj.getString("name")); //get json array name 

     }    
     // adding movie to movies array 
     movieList.add(movie); 

    } 


// then in the class with the onclick listener do 

listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
          long arg3) { 
    //update json array name to sqlite 

     db.updateUser(XXXXXXXXXXXXXX); // this value i want get from json array movie.setTitle() 

     Intent i = new Intent(getApplicationContext(), MainActivity.class); 



Movie movie = MyJSONArrayClass.getMovie(); 
if(null != movie){ 
// add your code here 
} 

     startActivity(i); 
    } 
}); 

Вы также можете посмотреть на реализацию Singleton для просмотра фильма, если вы не хотите использовать статику

+0

tq ... нужно больше времени, чтобы избежать ... – raregroove

0

В вашем первом фрагменте кода переменная response ссылается на массив JSON, который вы, по-видимому, получили в качестве ответа от сетевого запроса. Если вы хотите, чтобы адаптер мог продолжать использовать эти данные после возвращения метода кода, вам нужно либо сохранить ссылку на исходные данные, либо вам нужно сделать копию данных (и либо сохранить ее в памяти для срок службы адаптера или как-то сохраняться).

В своем втором фрагменте кода вам, похоже, нужны только названия фильмов. Так получилось, что в первом фрагменте вы сохраняете в movieList список Movie объектов (каждый из которых содержит название фильма). Итак, если movieList доступен для вашего второго фрагмента, и если класс Movie предоставляет способ получить название фильма (скажем, метод getTitle()), то вы можете сделать что-то подобное в своем втором фрагменте, чтобы получить название нажатая пункт:

String movieTitle = movieList.get(position).getTitle(); 

Примечание: третий параметр onItemClick() является положение щелкнули элемента. Кроме того, я предполагаю, что movieList имеет тип, подобный java.util.List<Movie>.