2017-03-22 10 views
1

ローカルのJsonを解析する方法が混乱しています。私はたくさん試しましたが、私は解決策を見つけることができません。
単純なタイトルのみを含むArrayListを作成したいのですが、そのタイトをJSONからRecylerViewに追加したいと思います。ローカルのJSONを実行してRecyclerViewに移入するにはどうすればいいですか?

{ 
    "hollywood": [{ 
     "_id": "58d3264f93f24d2bc87bebf5", 
     "title": "sagar rana", 
     "image": "encrypted-tbn1.gstatic.com/...", 
     "genre": "hollywood", 
     "description": "This for only demo purpose", 
     "release": 2010, 
     "download": "No download", 
     "youtube": "youtube.com/embed/C-5EOd8xavw...", 
     "__v ": 0, 
     "upload ": "2017-03-23T01:35:11.182Z" 
    }] 
} 

MainActivty.java

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.HashMap; 

import static android.R.attr.data; 

public class MainActivity extends AppCompatActivity { 
    RecyclerView recyclerView; 
    MyAdapter recycleradapter; 
    private ArrayList<Moviedemo> mArrayList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     try { 
      JSONObject obj = new JSONObject(loadJSONFromAsset()); 
      JSONArray m_jArry = obj.getJSONArray("hollywood"); 
      ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>(); 
      HashMap<String, String> m_li; 

      for (int i = 0; i < m_jArry.length(); i++) { 
       JSONObject jo_inside = m_jArry.getJSONObject(i); 
       Log.d("Details-->", jo_inside.getString("hollywood")); 
       String formula_value = jo_inside.getString("hollywood"); 
       String url_value = jo_inside.getString("url"); 

       //Add your values in your `ArrayList` as below: 
       m_li = new HashMap<String, String>(); 
       m_li.put("formule", formula_value); 
       m_li.put("url", url_value); 

       formList.add(m_li); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     recycleradapter = new MyAdapter(mArrayList); 
     recyclerView.setAdapter(recycleradapter); 

     recyclerViewstart(); 
     loadJSONFromAsset(); 


    } 

    private String loadJSONFromAsset() { 
     String json = null; 
     try { 

      InputStream is = getAssets().open("homepage.json"); 

      int size = is.available(); 

      byte[] buffer = new byte[size]; 

      is.read(buffer); 

      is.close(); 

      json = new String(buffer, "UTF-8"); 


     } catch (IOException ex) { 
      ex.printStackTrace(); 
      return null; 
     } 
     return json; 


    } 

    private void recyclerViewstart() { 
     recyclerView=(RecyclerView)findViewById(R.id.recylce); 
     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 

    } 
} 
+0

{ "ハリウッド":[ { "_id": "58d3264f93f24d2bc87bebf5"、 "タイトル": "サーガルのラナ"、 "イメージ":「https://で暗号化され、tbn1 .gstatic.com /画像Q = TBN:?ANd9GcRGIS3UlHSRvHFV6fm8kOS5HsXI3BIY8oO1HgxHpmu2dYO6ci3-9A " "ジャンル": "ハリウッド"、 "説明": "これだけのデモの目的のために"、 "リリース": "2010"、 " のダウンロード":"ダウンロードしない "、 " youtube ":" https://www.youtube.com/embed/C-5EOd8xavw "、 " __v ":0、 " upload ":" 2017-03-23T01:35 :11。182Z」 } ] –

+0

私は – Sanjeet

+0

を解析するためGsonを使用することができ、その難しいことではありませんので、場所を正確に、このコードの問題はありますか? –

答えて

1

を試してみてくださいだから、これはあなたのアダプタです。

recycleradapter = new MyAdapter(mArrayList); 
recyclerView.setAdapter(recycleradapter); 

あなたはmArrayListを初期化することはありません...ので、最初

mArrayList = new ArrayList<Moviedemo>(); 

はその後、あなたはJSONで解析するかを決定するためにした後、そのリストに追加したいと思うでしょうか。

すでに配列と文字列を取得する方法を知っています。

私はちょうどタイトルビュー

をrecylerするJSONからタイトルを追加したいですか?文字列として?次に、アダプターはなぜMoviedemoオブジェクト全体を保持していますか?

// Set the adapter 
recycleradapter = new MyAdapter(mArrayList); 
recyclerView.setAdapter(recycleradapter); 

// Open and parse file 
try { 
    JSONObject obj = new JSONObject(loadJSONFromAsset()); 
    JSONArray m_jArry = obj.getJSONArray("hollywood"); 

    for (int i = 0; i < m_jArry.length(); i++) { 
     // Start an object 
     Moviedemo movie = new Moviedemo(); 

     // Parse the JSON 
     JSONObject jo_inside = m_jArry.getJSONObject(i); 
     String title = jo_inside.getString("title"); 

     // Build the object 
     movie.setTitle(title); 

     // Add the object to the list 
     mArrayList.add(movie); 
    } 

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

// Update adapter 
recycleradapter.notifyDataSetChanged(); 
+0

ポイント –

0

としては、これはそれを行う必要があり、hereを示されている:

StringBuilder buf = new StringBuilder(); 
InputStream json = getAssets().open("book/contents.json"); 
BufferedReader in = 
    new BufferedReader(new InputStreamReader(json, "UTF-8")); 
String str; 

while ((str=in.readLine()) != null) { 
    buf.append(str); 
} 

in.close(); 

、あなたはそれを解析するために、このような何かを行うことができます:

JSONObject object = new JSONObject(jsonString); 

here

+0

Androidには 'org.json'が組み込まれているので、mvnrepositoryは必要ありません。https://developer.android.com/reference/org/json/JSONObject.html –

+0

本当ですか、私は忘れました。 – Catman155

0

を見つけることができorg.jsonライブラリは、この単純な方法

private JSONObject getAssetJSON() { 
     String inFile = "fileName.json"; 
     JSONObject assetJson = null; 
     try { 
      InputStream stream = context.getAssets().open(inFile); 
      int size = stream.available(); 
      byte[] buffer = new byte[size]; 
      stream.read(buffer); 
      stream.close(); 
      String assetString = new String(buffer); 
      assetJson = new JSONObject(assetString); 
     } catch (IOException e) { 
      // Handle IO exceptions here 
     } catch (JSONException e) { 
      // Handle JSON exceptions here 
     } 
     return assetJson; 
    } 
0

すべてのAndroidアプリケーションで最も重要なステップは、JSONを扱うことです。 私の提案として、GSONライブラリについて学習してみてください。

これらは、あなたがそれをよりよく理解できるように役立つリンクです。 1。 this

関連する問題