Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JSON数组转换为在RecyclerView中使用_Java_Android - Fatal编程技术网

Java 如何将JSON数组转换为在RecyclerView中使用

Java 如何将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

我有一个新闻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.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响应。