Autore Topic: Pratica okhttp e json per parsing dati  (Letto 249 volte)

Offline pilesco

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
Pratica okhttp e json per parsing dati
« il: 23 Luglio 2015, 11:25:05 CEST »
0
Ciao a tutti! PRECISAZIONE: QUESTO POST NON E' UNA COPIA,AVEVO SEMPLICEMENTE SBAGLIATO GRUPPO DI DISCUSSIONE! (sto provando a cancellare il post del gruppo gestione dei media)
 Per fare un pochino di pratica e prendere dimistichezza con le richieste internet e il parsing dati sto provando a fare un esempio carino che ho trovato in rete in cui si ricerca su twitter una determinata parola e i risultati compaiono in una list view! Sembrerà stupido per alcuni di voi fare un semplice copia e incolla dell'esempio ma altre volte mi è servito come punto di partenza. Il problema è che il programma  avviato su dispositivo sembra funzionare ma non mi riporta alcun risultato nella list view! Di seguito riporto il codice. Grazie a tutti

MainActivity.java:
Codice (Java): [Seleziona]
public class MainActivity extends ListActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1);
        setListAdapter(adapter);

        new AsyncTask<Void, String, Void>()
        {

            @Override
            protected Void doInBackground(Void... params)
            {
                try
                {
                    JSONObject obj = getJSONObject("http://search.twitter.com/search.json?q=mare");
                    JSONArray jsonArray = obj.getJSONArray("results");
                    for (int i = 0; i < jsonArray.length(); i++)
                    {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        publishProgress(jsonObject.getString("text"));
                    }
                }
                catch (IOException ignored)
                {
                }
                catch (JSONException ignored)
                {
                }
                return null;
            }

            @Override
            protected void onProgressUpdate(String... values)
            {
                for (String tweet : values)
                {
                    adapter.add(tweet);
                }
            }

        }.execute();
    }

    private static JSONObject getJSONObject(String url) throws IOException, MalformedURLException, JSONException
    {
        HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();

        InputStream in = conn.getInputStream();

        try
        {
            StringBuilder sb = new StringBuilder();
            BufferedReader r = new BufferedReader(new InputStreamReader(new DoneHandlerInputStream(in)));
            for (String line = r.readLine(); line != null; line = r.readLine())
            {
                sb.append(line);
            }
            return new JSONObject(sb.toString());
        }
        finally
        {
            in.close();
        }
    }


Activity_main.xml:
Codice (Java): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Prova"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/android:list"
        android:layout_below="@+id/textView"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

Manifest:
Codice (Java): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.****.****" >
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

All'avvio dell'app su dispositivo in debug usb mi compare la schermata principale con la scritta "prova" dell'activity_main.xml ma null altro nella list view che dovrebbe contenere tweet con la dicitura "mare"!
Qualcuno mi illumina?