2016-05-12 7 views
-1

Ich bin ziemlich neu in Android und Java. Ich versuche, JSON-Daten zu einer Listview hinzuzufügen. Ich habe die JSON-Daten kommen und drucken, um zu protokollieren, aber ich habe es schwer, die Daten in die Listenansicht zu bekommen. Ich habe versucht und arraylist auf Zeilennummern und es funktioniert, aber weiß nicht, wie man die JSON-Daten dort bekommen. Irgendwelche Hinweise oder Ratschläge würden apperziert werden.JSON - Hilfe Konvertieren von JSONArray in Arraylist und Auffüllen einer Listenansicht.

Ich suche ein Ergebnis wie

(Keys) ID Name Tourn_ID (Werte) 1 Tournamnet1 MI2016 (Werte) 2 Tournamnet2 UT2016 (Werte) 3 Tournamnet4 USNC2016 usw.

Hier ist mein Code 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

Stellen Sie eine Probe des JSON Sie Parsen und Ihre Adapterklasse. –

+1

Mögliches Duplikat von [JSON Android ListView] (http: // stackoverflow.com/Fragen/11318761/json-android-Listenansicht) –

+0

{ "Beiträge": [ { "post": { "ID": "74", \t \t "TOURN_ID": "999", \t \t „YEAR ":" 2016" , \t \t "START_DATE": "2016.09.07", \t \t "END_DATE": "2016.09.18", \t \t "DATE_STRING": "7. September - 18. 2016" , \t \t "NAME": "2016 Paralympic Games", \t \t "Shortname": "2016 Paralympic Games", \t \t "TOURN_TYPE": "International"}}, \t \t { "post": { "ID": "73", \t \t "TOURN_ID": "999", \t \t "YEAR": "2016 “ \t \t "START_DATE": "2016.06.23", \t \t "END_DATE": "2016.06.25", \t \t "DATE_STRING": "22 bis 23 Juni 2016", \t \t "NAME": "2016 UBABA Nationale Goalball Meisterschaften", \t \t "ShortName": "2016 US Nationals", \t \t "TOURN_TYPE": "Inland"}}, ]} – Tornado973

Antwort

1

eine JAVA-Datei Model.java

public class Model { 
    public String ID ; 
    public String Name; 
    public Tourn_ID; 
} 

Jetzt

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); 
       } 
zum Zeitpunkt der Parsing-Daten namens Erstellen

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

} 

in 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> 

jetzt Listenansicht

listview = (Listview).findViewById(R.id.idOfYpurListview); 
Adapter adapter = new Adapter(Activity.this,modelArrayList); 
listview.setAdapter(adapter); 
Verwandte Themen