Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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—帮助将JSONArray转换为Arraylist并填充listview。_Java_Android_Json_Listview_Arraylist - Fatal编程技术网

Java JSON—帮助将JSONArray转换为Arraylist并填充listview。

Java JSON—帮助将JSONArray转换为Arraylist并填充listview。,java,android,json,listview,arraylist,Java,Android,Json,Listview,Arraylist,我对android和java相当陌生。我正在尝试向listview添加JSON数据。我将JSON数据输入并打印到日志中,但我很难将数据获取到列表视图中。我已经尝试过在行号上使用arraylist,它可以工作,但不知道如何在那里获取JSON数据。任何指示或建议都会被提出 我在寻找这样的结果 (钥匙)ID名称Tourn\u ID (价值)1图南网1 MI2016 (价值)2 Tournamnet2 UT2016 (值)3 Tournamnet4 USNC2016 等等 这是我的Java代码

我对android和java相当陌生。我正在尝试向listview添加JSON数据。我将JSON数据输入并打印到日志中,但我很难将数据获取到列表视图中。我已经尝试过在行号上使用arraylist,它可以工作,但不知道如何在那里获取JSON数据。任何指示或建议都会被提出

我在寻找这样的结果

(钥匙)ID名称Tourn\u ID (价值)1图南网1 MI2016 (价值)2 Tournamnet2 UT2016 (值)3 Tournamnet4 USNC2016 等等

这是我的Java代码

    import android.os.AsyncTask;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import static android.R.*;
import static android.R.layout.simple_list_item_1;
import static java.util.Arrays.asList;

public class MainActivity extends AppCompatActivity {


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

        DownloadTask task = new DownloadTask();
        task.execute("http://www.goalballscoreboard.net/mobile/downloads/WebServices/Tournnames/Tournnames.php?rows=all");

        ListView tournListView = (ListView) findViewById(R.id.tournListView);
        final ArrayList<String> myTournList = new ArrayList<String>(asList("ROW 1", "ROW 2", "Row3"));
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, simple_list_item_1, myTournList);
        tournListView.setAdapter(arrayAdapter);

    }

    public class DownloadTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {

            String result = "";
            URL url;
            HttpURLConnection urlConnection = null;

            try {
                url = new URL(urls[0]);

                urlConnection = (HttpURLConnection) url.openConnection();

                InputStream in = urlConnection.getInputStream();

                InputStreamReader reader = new InputStreamReader(in);

                int data = reader.read();

                while (data != -1) {

                    char current = (char) data;

                    result += current;

                    data = reader.read();

                }

                return result;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            try {
                JSONObject jsonObject = new JSONObject(result);

                String tournInfo = jsonObject.getString("posts");

                Log.i("Tourn INFO", tournInfo);

                JSONArray arr = new JSONArray(tournInfo);

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

                for (int i = 0; i < arr.length(); i++) {


                    JSONObject jsonPart = arr.getJSONObject(i);

                    JSONObject jsonObjectPost = jsonPart.getJSONObject("post");

                    //Log.i("Each Tournament Object", jsonPart.getString("post"));
                    Log.i("ID", jsonObjectPost.getString("ID"));
                    Log.i("Name of Tournament", jsonObjectPost.getString("NAME"));
                    Log.i("TOURN_ID", jsonObjectPost.getString("TOURN_ID"));

                    String id = jsonObjectPost.get("ID").toString();
                    String name = jsonObjectPost.get("NAME").toString();
                    String tournID = jsonObjectPost.get("TOURN_ID").toString();
                    list.add(jsonObjectPost.getString("ID") + ", " + jsonObjectPost.getString("NAME") + "," + jsonObjectPost.getString("TOURN_ID") + "\n");
                }

                System.out.println("" + list.toString());


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

    }
}
导入android.os.AsyncTask;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Locale;
导入静态android.R.*;
导入静态android.R.layout.simple_list_item_1;
导入静态java.util.Arrays.asList;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask任务=新建DownloadTask();
任务。执行(“http://www.goalballscoreboard.net/mobile/downloads/WebServices/Tournnames/Tournnames.php?rows=all");
ListView tournListView=(ListView)findViewById(R.id.tournListView);
最终ArrayList myTournList=新ArrayList(asList(“第1行”、“第2行”、“第3行”);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(此为简单列表项1,myTournList);
setAdapter(arrayAdapter);
}
公共类DownloadTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…URL){
字符串结果=”;
网址;
HttpURLConnection-urlConnection=null;
试一试{
url=新url(url[0]);
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=urlConnection.getInputStream();
InputStreamReader reader=新的InputStreamReader(in);
int data=reader.read();
while(数据!=-1){
当前字符=(字符)数据;
结果+=电流;
data=reader.read();
}
返回结果;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
试一试{
JSONObject JSONObject=新JSONObject(结果);
String tournInfo=jsonObject.getString(“posts”);
Log.i(“Tourn信息”,tournInfo);
JSONArray arr=新JSONArray(tournInfo);
列表=新的ArrayList();
对于(int i=0;i
创建一个名为
Model.JAVA的JAVA文件

public class Model {
    public String ID ;
    public String Name;
    public Tourn_ID;
}
现在在解析数据时

ArrayList<Model> modelArrayList = new ArrayList();
for (int i = 0; i < arr.length(); i++) {


                    JSONObject jsonPart = arr.getJSONObject(i);

                    JSONObject jsonObjectPost = jsonPart.getJSONObject("post");

                   Model model;
                    model.ID = jsonObjectPost.get("ID").toString();
                    model.Name = jsonObjectPost.get("NAME").toString();
                    Model.Tourn_ID = jsonObjectPost.get("TOURN_ID").toString();
                    modelArrayList .add(model);
                }

发布您正在解析的JSON和适配器类的示例。{“posts”:[{“Post”:{“ID”:“74”,“TOURN_ID”:“999”,“YEAR”:“2016”,“START_DATE”:“2016-09-07”,“END_DATE”:“2016-09-18”,“DATE_STRING”:“2016年9月7日至18日”,“NAME”:“2016年残奥会”,“ShortName”:“2016年残奥会”,“TOURN TYPE”:“国际”{“邮报”{“ID:“73”,“TOURN_ID:“999”,“年份”:“2016”,“开始日期”:“2016-06-23”,“结束日期”:“2016-06-25”,“日期字符串”:“2016年6月22日至23日”,“姓名”:“2016年美国篮球协会全国守门球锦标赛”,“简称”:“2016年美国国民”,“TOURN_类型”:“国内”}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class CustomAdapter extends BaseAdapter{   
    ArrayList<Model> result = new ArrayList();
    Context context;
 int [] imageId;
      private static LayoutInflater inflater=null;
    public CustomAdapter(Context context, ArrayList<Model> result) {
        // TODO Auto-generated constructor stub
        this.result=result;
        this.context=context;
         inflater = ( LayoutInflater )context.
                 getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return result.size;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public class Holder
    {
        TextView tv,tv2,tv3;

    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder=new Holder();
        View rowView;       
             rowView = inflater.inflate(R.layout.custom_adapter, null);
             holder.tv=(TextView) rowView.findViewById(R.id.textView1);
             holder.tv2=(TextView) rowView.findViewById(R.id.textView2);    
              holder.tv3=(TextView) rowView.findViewById(R.id.textView3);       
         holder.tv.setText(result[position].ID);
          holder.tv2.setText(result[position].Name);
           holder.tv3.setText(result[position].Tour_ID);      
         rowView.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "You Clicked "+result[position], Toast.LENGTH_LONG).show();
            }
        });   
        return rowView;
    }

} 
     <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView1"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25dp"
            android:text="TextView" />

<TextView
            android:id="@+id/textView2"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25dp"
            android:text="TextView" />

<TextView
            android:id="@+id/textView3"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25dp"
            android:text="TextView" />


    </LinearLayout> 
listview = (Listview).findViewById(R.id.idOfYpurListview);
Adapter adapter = new Adapter(Activity.this,modelArrayList);
listview.setAdapter(adapter);