[英]How to convert JSON array to use in RecyclerView
I have a news API JSON link which I want to convert to string array so that I can use them in recycled view. 我有一个新闻API JSON链接,我想将其转换为字符串数组,以便可以在回收视图中使用它们。
I am a new to Java, kindly help me to know the way to do it. 我是Java的新手,请帮助我了解这样做的方法。
I am trying to use Android Networking Library and GSON for this purpose. 我正在尝试为此目的使用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) {
}
});
}
}
First create a list: 首先创建一个列表:
List<String> list = new ArrayList<String>();
Then you can add the string values from the JSONArray to the list like this: 然后,您可以将JSONArray中的字符串值添加到列表中,如下所示:
for (int i = 0; i < response.length(); i++) {
list.add(response.getJSONObject(i).getString("name"));
}
Then pass this list variable to your adapter. 然后将此列表变量传递给您的适配器。
Create a method inside your AdapterNews
class something like this 在您的
AdapterNews
类中创建一个类似这样的方法
public void updateNewsList(List<News> list){
this.newsList = list; // newsList is the list which holds news data inside your adapter.
notifyDataSetChanged();
}
Call this method in onResponse of your network request. 在网络请求的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) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.