2017-07-08 37 views
0

使用我有我要转换为字符串数组新闻API JSON链接,这样我可以在回收的视图中使用它们。如何转换JSON数组中RecyclerView

我是新到Java,请帮助我知道做到这一点。

我试图使用Android网络图书馆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

AdapterNews类里面的东西像这样

​​

调用创建方法在您的网络请求的onResponse此方法。

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

首先创建一个列表:

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

然后你可以从JSONArray添加字符串值列表如下:

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

}

然后通过这列出变量到您的适配器。