2016-05-12 3 views
-1

Я довольно новичок в android и java. Я пытаюсь добавить данные JSON в список. У меня есть данные JSON, входящие и печатающие в журнал, но мне трудно получить данные в виде списка. Я пытался и arraylist на номера строк, и он работает, но не знаю, как получить данные JSON. Любые указатели или советы будут рассмотрены.JSON - Справка Преобразование JSONArray в Arraylist и заполнение списка.

Ищу результат Как

(Ключи) ID Имя Tourn_ID (значения) 1 Tournamnet1 MI2016 (значения) 2 Tournamnet2 UT2016 (Values) 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(); 
      } 
     } 

    } 
} 
+0

сообщение образец JSON вы разбираете и вашего класса адаптера. –

+1

Возможный дубликат [JSON Android ListView] (http: // stackoverflow.ком/вопросы/11318761/JSON-андроид-ListView) –

+0

{ "должности": [ { "пост": { "ID": "74", \t \t "TOURN_ID": "999", \t \t «ГОД ":" 2016" , \t \t "START_DATE": "2016-09-07", \t \t "END_DATE": "2016-09-18", \t \t "DATE_STRING": "7 сентября - 18 2016" , \t \t "NAME": "2016 Паралимпийские игры", \t \t "сокращенным": "2016 Паралимпийские игры", \t \t "TOURN_TYPE": "Международный"}}, \t \t { "пост": { "ID": "73", \t \t "TOURN_ID": "999", \t \t "Год": "2016 » \t \t "START_DATE": "2016-06-23", \t \t "END_DATE": "2016-06-25", \t \t "DATE_STRING": "22 июня - двадцать третий +2016", \t \t «НАЗВАНИЕ»: «2016 USABA National Goalball Championships», \t \t «ShortName»: «2016 граждан США», \t \t «TOURN_TYPE»: «Внутренние»}}, ]} – Tornado973

ответ

1

Создайте файл с именем JAVA Model.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); 
       } 

Adapter.java

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; 
    } 

} 

в custom_adapter.xml

 <?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 = (Listview).findViewById(R.id.idOfYpurListview); 
Adapter adapter = new Adapter(Activity.this,modelArrayList); 
listview.setAdapter(adapter);