2016-07-28 6 views
0

私がしようとしていることは、jsonがすべての名前をリストビュー(その名前のimdbidを保存)にプルダウンしてそこからムービーをクリックすると新しい意図に移動します。あなたは、その名前の概要と画像でクリック映画もし私がjsonarrayを持っていて、それをlistviewに表示し、リストから特定の項目をどのようにしたいのですか?

次のようになり、その中に配列とJSONで検索イム(それは、ユーザーがそう、これは一例であり、検索内容に基づいて...)

{"Search":[{"Title":"Batman  Begins","Year":"2005","imdbID":"tt0372784","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg"},{"Title":"Batman v Superman: Dawn of Justice","Year":"2016","imdbID":"tt2975590","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg"},{"Title":"Batman","Year":"1989","imdbID":"tt0096895","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/MV5BMTYwNjAyODIyMF5BMl5BanBnXkFtZTYwNDMwMDk2._V1_SX300.jpg"},{"Title":"Batman Returns","Year":"1992","imdbID":"tt0103776","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg"},{"Title":"Batman Forever","Year":"1995","imdbID":"tt0112462","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/MV5BNWY3M2I0YzIt[email protected]._V1_SX300.jpg"},{"Title":"Batman & Robin","Year":"1997","imdbID":"tt0118688","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg"},{"Title":"Batman: The Animated Series","Year":"1992–1995","imdbID":"tt0103359","Type":"series","Poster":"http://ia.media-imdb.com/images/M/MV5BMTU3MjcwNzY3NF5BMl5BanBnXkFtZTYwNzA2MTI5._V1_SX300.jpg"},{"Title":"Batman: Under the Red Hood","Year":"2010","imdbID":"tt1569923","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg"},{"Title":"Batman: The Dark Knight Returns, Part 1","Year":"2012","imdbID":"tt2313197","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg"},{"Title":"Batman: Mask of the Phantasm","Year":"1993","imdbID":"tt0106364","Type":"movie","Poster":"http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg"}],"totalResults":"310","Response":"True"} 

映画の名前が入っているリストビューをクリックすると、imdbidが表示されます。 これは私が試したものです:

JSONObject jsonObject = new JSONObject(finalJson); 
      JSONArray parentArray = jsonObject.getJSONArray("Search"); 
      StringBuffer finalStringBuffer = new StringBuffer(); 
      String imdbid ; 
      for (int i=0; i<parentArray.length(); i++){ 
       JSONObject finalJsonObject = parentArray.getJSONObject(i); 
       String movieName = finalJsonObject.getString("Title"); 
       nameOfMovie.add(movieName); 
       String year = finalJsonObject.getString("Year"); 
       yearOfMovie.add(year); 
       String omdbID = finalJsonObject.getString("imdbID"); 
       id.add(omdbID); 
       finalStringBuffer.append(movieName + " , " + year + " , " + omdbID + "\n"); 
       imdbid = omdbID ; 
      } 

     } 
     catch (JSONException e) { 
      e.printStackTrace(); 
     } 

    } 

しかし、彼が強く叫んだimdbid(リストに表示されている映画の名前にある)を知るにはどうすればいいですか?
リストビューコード:

listViewInternetScreen.setClickable(true); 
    listViewInternetScreen.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long i) { 
      Intent intenttoEditScreen=new Intent(AddFromInternet.this, EditMovie.class); 
      setResult(RESULT_OK,intenttoEditScreen); 
      String jsonMovieName = String.valueOf(nameOfMovie); 
      String jsonMovieSummery = String.valueOf(yearOfMovie); 
      String jsonImageURL = String.valueOf(id); 

      intenttoEditScreen.putExtra("json", jsonMovieName); 
      intenttoEditScreen.putExtra("json", jsonMovieSummery); 
      intenttoEditScreen.putExtra("json", jsonImageURL); 
      startActivity(intenttoEditScreen); 


     } 

     }); 

と検索方法:任意の助け

 btnGo = (Button) findViewById(R.id.btnGo); 
    assert btnGo != null; 
    btnGo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      //MAKE A SEARCH STRING AND PARSE THE RESULT 
      final String search = "http://www.omdbapi.com/?s=" + EtSearch.getText().toString(); 
      Log.e("JSON", search); 
      new JSONParser().execute(search); 
      ArrayList<String> list = new ArrayList<>(nameOfMovie); 
      arrayAdapter = new ArrayAdapter<>(AddFromInternet.this, 
        android.R.layout.simple_list_item_1, list); 
      arrayAdapter.notifyDataSetChanged(); 
      listViewInternetScreen.setAdapter(arrayAdapter); 
      Log.e("JSON MOVIE", String.valueOf(nameOfMovie)); 

     } 
    }); 

感謝:D

答えて

0

ステップ1:使用Gson(とレトロフィット、あなたがしたい場合)にJSON文字列をJavaオブジェクトのリストに単純化する

ステップ2:このオブジェクトのリストをロードするカスタムArrayAdapterを作成します。次に、アイテムクリックリスナを追加すると、クリックしたリストアイテムからそのオブジェクトを取得し、そのムービーの完全な情報を表示するためにインテントを開始できます。あなたはそれが病気になるときしようとします

+0

感謝を含んではなく、個々のフィールドよりも、1行でテントにオブジェクトを追加できるように

追加のステップは、ムービーオブジェクトParcelableを作ることであろう家庭 ちょうど速いです私がそれを使うなら、gsonについての質問です。JSONObject finalJsonObject = parentArray.getJSONObject(i); しかし、gsonメソッドを文字列とその配列型に入れるだけですか? – rollcage

+0

次のリンクにJSONを投げ、Gsonのオプションをチェックすると、Gsonを使ってJavaオブジェクトを生成します。その行の代わりにArraylistがあります。 JSON配列を手動で解析する必要はありません。 Gsonのドキュメントには多くの有用な例があります。 http://www.jsonschema2pojo.org –

+0

改造例がここに見られます。 https://github.com/santhoshvai/omdb-android-client –

関連する問題