Java 如何将JSON数组转换为在RecyclerView中使用
我有一个新闻API JSON链接,我想将其转换为字符串数组,以便在循环视图中使用它们 我是Java新手,请帮助我了解使用Java的方法 为此,我正在尝试使用Android网络库和GSONJava 如何将JSON数组转换为在RecyclerView中使用,java,android,Java,Android,我有一个新闻API JSON链接,我想将其转换为字符串数组,以便在循环视图中使用它们 我是Java新手,请帮助我了解使用Java的方法 为此,我正在尝试使用Android网络库和GSON package in.apptonic.lalit.newsapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Line
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) {
}
});
}
}
包in.apptonic.lalit.newsapplication;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入com.androidnetworking.androidnetworking;
导入com.androidnetworking.error.ANError;
导入com.androidnetworking.interfaces.JSONArrayRequestListener;
导入com.google.gson.gson;
导入com.google.gson.GsonBuilder;
导入org.json.JSONArray;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入in.apptonic.lalit.newsapplication.model.News;
公共类MainActivity扩展了AppCompatActivity{
回收视图回收视图;
RecyclerView.LayoutManager LayoutManager;
RecyclerView.适配器;
List newsList=newarraylist();
私人Gson;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GsonBuilder GsonBuilder=新的GsonBuilder();
gsonbuilder.setDateFormat(“M/d/yy hh:mm a”);
gson=gsonbuilder.create();
初始化(getApplicationContext());
recyclerView=(recyclerView)findViewById(R.id.recyclerView);
layoutManager=新的LinearLayoutManager(此);
recyclerView.setLayoutManager(layoutManager);
适配器=新适配器新闻(新闻列表);
recyclerView.setAdapter(适配器);
下载新闻();
}
私有void下载新闻(){
AndroidNetworking.get(“https://newsapi.org/v1/articles?source=the-下一个网页&sortBy=latest&apiKey=hidden“)
.build()
.getAsJSONArray(新的JSONArrayRequestListener(){
@凌驾
公共void onResponse(JSONArray响应){
List news=Arrays.asList(gson.fromJson(String.valueOf(response),news[].class));
//TODO如何将JSON值转换为n字符串,以便在adapter for recycler视图中发送它们
}
@凌驾
公共无效一个错误(一个错误一个错误){
}
});
}
}
在AdapterNews
类中创建一个类似这样的方法
public void updateNewsList(List<News> list){
this.newsList = list; // newsList is the list which holds news data inside your adapter.
notifyDataSetChanged();
}
public void updateNewsList(列表){
this.newsList=list;//newsList是在适配器中保存新闻数据的列表。
notifyDataSetChanged();
}
在响应网络请求时调用此方法
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) {
}
});
AndroidNetworking.get(“https://newsapi.org/v1/articles?source=the-下一个网页&sortBy=latest&apiKey=hidden“)
.build()
.getAsJSONArray(新的JSONArrayRequestListener(){
@凌驾
公共void onResponse(JSONArray响应){
List news=Arrays.asList(gson.fromJson(String.valueOf(response),news[].class));
adapter.updateNewsList(新闻);
}
@凌驾
公共无效一个错误(一个错误一个错误){
}
});
在AdapterNews
类中创建一个类似这样的方法
public void updateNewsList(List<News> list){
this.newsList = list; // newsList is the list which holds news data inside your adapter.
notifyDataSetChanged();
}
public void updateNewsList(列表){
this.newsList=list;//newsList是在适配器中保存新闻数据的列表。
notifyDataSetChanged();
}
在响应网络请求时调用此方法
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) {
}
});
AndroidNetworking.get(“https://newsapi.org/v1/articles?source=the-下一个网页&sortBy=latest&apiKey=hidden“)
.build()
.getAsJSONArray(新的JSONArrayRequestListener(){
@凌驾
公共void onResponse(JSONArray响应){
List news=Arrays.asList(gson.fromJson(String.valueOf(response),news[].class));
adapter.updateNewsList(新闻);
}
@凌驾
公共无效一个错误(一个错误一个错误){
}
});
首先创建一个列表:
List<String> list = new ArrayList<String>();
List List=new ArrayList();
然后可以将JSONArray中的字符串值添加到列表中,如下所示:
for (int i = 0; i < response.length(); i++) {
list.add(response.getJSONObject(i).getString("name"));
}
for(int i=0;i
然后将此列表变量传递给适配器。首先创建一个列表:
List<String> list = new ArrayList<String>();
List List=new ArrayList();
然后可以将JSONArray中的字符串值添加到列表中,如下所示:
for (int i = 0; i < response.length(); i++) {
list.add(response.getJSONObject(i).getString("name"));
}
for(int i=0;i
然后将此列表变量传递给适配器。只是一个附加信息。这是我的Json响应。只是一个补充信息。这是我的Json响应。