Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 JSONArray到Listview我做错了什么?_Java_Android_Json_Listview - Fatal编程技术网

Java JSONArray到Listview我做错了什么?

Java JSONArray到Listview我做错了什么?,java,android,json,listview,Java,Android,Json,Listview,大家好,我现在已经搜索了一段时间的错误或如何纠正错误,是的,这里的很多问题帮助我更进一步 但是我得到了一个API,其中有一个JSONArray,我想在listview中显示这些数据。到目前为止,我在我的日志中得到了我的数据,现在我只是尝试从每个对象开始显示名称(然后我可以稍后添加其余的数据),但我不确定我是否在正确的位置,也许有人可以在这里帮助我,并显示我做错了什么 非常感谢 列表视图名称:AllBirds @Override protected void onCreate(Bundle

大家好,我现在已经搜索了一段时间的错误或如何纠正错误,是的,这里的很多问题帮助我更进一步

但是我得到了一个API,其中有一个JSONArray,我想在listview中显示这些数据。到目前为止,我在我的日志中得到了我的数据,现在我只是尝试从每个对象开始显示名称(然后我可以稍后添加其余的数据),但我不确定我是否在正确的位置,也许有人可以在这里帮助我,并显示我做错了什么

非常感谢

列表视图名称:AllBirds

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_observation);

    mAuth = FirebaseAuth.getInstance();

    String URL="myAPI";

    RequestQueue requestQueue= Volley.newRequestQueue(this);


    JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            Log.e("Rest Response",response.toString());

            try{
                for(int i=0; i<response.length();i++){
                    JSONObject jresponse = response.getJSONObject(i);
                    String NameDanish = jresponse.getString("NameDanish");

                    Log.d("NameDanish", NameDanish);


                }
            }catch(JSONException e){
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Rest Response",error.toString());
        }
    });

    requestQueue.add(objectRequest);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, NameDanish);

    ListView list = (ListView) findViewById(R.id.AllBirds);
    list.setAdapter(adapter);
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u all\u观察);
mAuth=FirebaseAuth.getInstance();
字符串URL=“myAPI”;
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonArrayRequest objectRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.e(“Rest响应”,Response.toString());
试一试{

对于(int i=0;i在类中创建ArrayList

ArrayList ArrayList=新的ArrayList()

使用以下命令更改上述代码:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_all_observation);

        mAuth = FirebaseAuth.getInstance();

        String URL = "myAPI";

        RequestQueue requestQueue = Volley.newRequestQueue(this);


        JsonArrayRequest objectRequest = new JsonArrayRequest(Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                Log.e("Rest Response", response.toString());

                try {
                    for (int i = 0; i < response.length(); i++) {
                        JSONObject jresponse = response.getJSONObject(i);
                        String NameDanish = jresponse.getString("NameDanish");
                        arrayList.add(NameDanish);
                        Log.d("NameDanish", NameDanish);


                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Rest Response", error.toString());
            }
        });

        requestQueue.add(objectRequest);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, arrayList);

        ListView list = (ListView) findViewById(R.id.AllBirds);
        list.setAdapter(adapter);
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u all\u观察);
mAuth=FirebaseAuth.getInstance();
字符串URL=“myAPI”;
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonArrayRequest objectRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.e(“Rest响应”,Response.toString());
试一试{
对于(int i=0;i
像这样全局创建字符串arraylist

ArrayList<String> name_array=new ArrayList<>();
ArrayList name_array=new ArrayList();
然后加上

         try{
            for(int i=0; i<response.length();i++){
                JSONObject jresponse = response.getJSONObject(i);
                String NameDanish = jresponse.getString("NameDanish");
                name_array.add(NameDanish);
                Log.d("NameDanish", NameDanish);
            }
试试看{

对于(int i=0;i创建listView、适配器、数组作为成员变量,并使用responseHandler中的notifyDataUpdate更新数据

    ListView mList;
    ArrayAdapter<String> mAdapter
    ArrayList<String> mData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_all_observation);
        mData=new ArrayList<>();

        mList = (ListView) findViewById(R.id.AllBirds);
        mAdapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, mData);
        list.setAdapter(adapter);

        mAuth = FirebaseAuth.getInstance();
        String URL="myAPI";

        RequestQueue requestQueue= Volley.newRequestQueue(this);


        JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                Log.e("Rest Response",response.toString());

                try{
                    for(int i=0; i<response.length();i++){
                        JSONObject jresponse = response.getJSONObject(i);
                        String NameDanish = jresponse.getString("NameDanish");
                        mData.add(NameDanish);
                        Log.d("NameDanish", NameDanish);
                    }
                    mAdapter.notifyDataSetChanged();
                }catch(JSONException e){
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Rest Response",error.toString());
            }
        });

        requestQueue.add(objectRequest);
    }
ListView-mList;
ArrayAdapter mAdapter
ArrayList mData;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u all\u观察);
mData=newarraylist();
mList=(ListView)findViewById(R.id.AllBirds);
mAdapter=新阵列适配器(this,R.layout.activity\u all\u observation,mData);
list.setAdapter(适配器);
mAuth=FirebaseAuth.getInstance();
字符串URL=“myAPI”;
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonArrayRequest objectRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.e(“Rest响应”,Response.toString());
试一试{

对于(inti=0;i我现在已经将代码更改为这个,正如Toyj所说,我已经将我的xml发布到了

我没有得到任何数据,只是所有的名字都显示在日志中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_observation);

    mAuth = FirebaseAuth.getInstance();
    final ArrayList arrayList = new ArrayList<>()

    String URL="MYAPI";

    RequestQueue requestQueue= Volley.newRequestQueue(this);


    JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            Log.e("Rest Response",response.toString());

            try{
                //JSONArray jsonArray = new JSONArray(response);
                for(int i=0; i<response.length();i++){
                    JSONObject jresponse = response.getJSONObject(i);
                    String NameDanish = jresponse.getString("NameDanish");
                    arrayList.add(NameDanish);
                    Log.d("NameDanish", NameDanish);


                }
            }catch(JSONException e){
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Rest Response",error.toString());
        }
    });

    requestQueue.add(objectRequest);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, arrayList);

    ListView list = (ListView) findViewById(R.id.AllBirds);
    list.setAdapter(adapter);
}
XML文件

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="net.simplifiedlearning.firebaseauth.all_observationActivity">


    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/AllBirds">

    </ListView>

</LinearLayout>


什么是
NameDanish
这里您可以将JSONArray响应粘贴到json响应之前您可以传递字符串值(NameDanish)在ArrayAdapter中。请在ArrayAdapter中传递字符串数组或Arraylist。我已在底部添加了所有代码作为问题。我尝试调试på代码,但在Arraylist中未获得任何结果,但我仍能在日志中看到所有名称。很抱歉,我的评论已发布较长时间,请查看:)
    {
    "BirdId": 1,
    "Comment": null,
    "Created": "/Date(1523836800000+0000)/",
    "Id": 132,
    "Latitude": 55.6886037,
    "Longitude": 12.5310135,
    "Placename": "K",
    "Population": 0,
    "UserId": "user1",
    "NameDanish": "solsort",
    "NameEnglish": "blackbird"
}
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="net.simplifiedlearning.firebaseauth.all_observationActivity">


    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/AllBirds">

    </ListView>

</LinearLayout>