2017-07-08 7 views
0

リサイズビューで使用できるように、文字列配列に変換するニュースAPI JSONリンクがあります。JSON配列をRecyclerViewで使用するように変換する方法

私はJavaの初心者です。私はそれをやり遂げる方法を親切に助けてくれます。

私はこの目的のためにAndroid Networking LibraryとGSONを使用しようとしています。

package in.apptonic.lalit.newsapplication; 

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

import com.androidnetworking.AndroidNetworking; 
import com.androidnetworking.error.ANError; 
import com.androidnetworking.interfaces.JSONArrayRequestListener; 
import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

import org.json.JSONArray; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

import in.apptonic.lalit.newsapplication.model.News; 

public class MainActivity extends AppCompatActivity { 

    RecyclerView recyclerView; 
    RecyclerView.LayoutManager layoutManager; 
    RecyclerView.Adapter adapter; 
    List<News> newsList = new ArrayList<>(); 
    private Gson gson; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     GsonBuilder gsonbuilder = new GsonBuilder(); 
     gsonbuilder.setDateFormat("M/d/yy hh:mm a"); 
     gson = gsonbuilder.create(); 

     AndroidNetworking.initialize(getApplicationContext()); 

     recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
     layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 
     adapter = new AdapterNews(newsList); 
     recyclerView.setAdapter(adapter); 
     downloadNews(); 
    } 

    private void downloadNews() { 

     AndroidNetworking.get("https://newsapi.org/v1/articles?source=the-next-web&sortBy=latest&apiKey=hidden") 
       .build() 
       .getAsJSONArray(new JSONArrayRequestListener() { 
        @Override 
        public void onResponse(JSONArray response) { 

         List<News> news = Arrays.asList(gson.fromJson(String.valueOf(response), News[].class)); 

         //TODO How to convert JSON values n String so that I can send them in adapter for recycler view 
        } 

        @Override 
        public void onError(ANError anError) { 


        } 
       }); 


    } 
} 

答えて

1

この

​​

のようなものは、あなたのネットワーク要求のonResponseでこのメソッドを呼び出して、あなたのAdapterNewsクラス内のメソッドを作成します。

List<String> list = new ArrayList<String>(); 

は、その後、あなたがこのようにリストにJSONArrayから文字列値を追加することができます:

for(int i = 0; i < response.length(); i++){ 
list.add(response.getJSONObject(i).getString("name")); 

}

は次にこれを渡し

AndroidNetworking.get("https://newsapi.org/v1/articles?source=the-next-web&sortBy=latest&apiKey=hidden") 
      .build() 
      .getAsJSONArray(new JSONArrayRequestListener() { 
       @Override 
       public void onResponse(JSONArray response) { 

        List<News> news = Arrays.asList(gson.fromJson(String.valueOf(response), News[].class)); 
        adapter.updateNewsList(news); 
       } 

       @Override 
       public void onError(ANError anError) { 
       } 
      }); 
+0

追加情報です。これが私のJsonレスポンスです。 https://newsapi.org/v1/articles?source=the-next-web&sortBy=latest&apiKey=81aa06e91e5a4f189d1b7a64f07bc373 –

0

まずリストを作成変数をリストに追加します。

関連する問題