-3

The program/apk need to list all titles , but when i run it apk close please help me i dont know what happens really

package com.eu.agendamarinhagrande;

import android.annotation.TargetApi;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Build;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import com.eu.agendamarinhagrande.JSONParser;
import com.eu.agendamarinhagrande.R;

import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class MainActivity extends ActionBarActivity {

    // Progress Dialog
    private ProgressDialog pDialog;

    // Creating JSON Parser object
    JSONParser jParser = new JSONParser();

    ArrayList<HashMap<String, String>> empresaList;


    // url to get all products list
    private static String url_all_empresas = "http://www.grifin.pt/projectoamg/Conexao.php";

    // JSON Node names


    private static final String TAG_TITULO = "Titulo";


    // products JSONArray
    String resultado = null;

    ListView lista;

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Hashmap para el ListView
        empresaList = new ArrayList<HashMap<String, String>>();
LoadAllProducts loadAllProducts = new LoadAllProducts();
        // Cargar los productos en el Background Thread

        lista = (ListView) findViewById(R.id.agenda);
loadAllProducts.execute(String.valueOf(lista));
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

    }//fin onCreate


    class LoadAllProducts extends AsyncTask<String, String, String> {

        /**
         * Antes de empezar el background thread Show Progress Dialog
         */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("A carregar eventos. Por favor espere...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * obteniendo todos los productos
         */
        protected String doInBackground(String... args) {
            // Building Parameters
            List params = new ArrayList();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_all_empresas, "GET", params);
StringBuilder sb = new StringBuilder();
            // Check your log cat for JSON reponse
            Log.d("All Products: ", url_all_empresas.toString());
           resultado = sb.toString();
            try {
                // Checking for SUCCESS TAG

                // products found
                // Getting Array of Products

                    JSONArray arrayJson = new JSONArray(resultado);
                for (int i = 0; i<arrayJson.length();i++){



                // Storing each json item in variable
                JSONObject c = arrayJson.getJSONObject(i);
                String Titulo = c.getString(TAG_TITULO);


                // creating new HashMap
                HashMap map = new HashMap();

                // adding each child node to HashMap key => value
                map.put(TAG_TITULO, Titulo);


                empresaList.add(map);
            }

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

        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all products
            pDialog.dismiss();
            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
                    /**
                     * Updating parsed JSON data into ListView
                     * */
                    ListAdapter adapter = new SimpleAdapter(
                            MainActivity.this,
                            empresaList,
                            R.layout.single_post,
                            new String[]{
                                    TAG_TITULO

                            },
                            new int[]{
                                    R.id.single_post_tv_id

                            });
                    // updating listview
                    //setListAdapter(adapter);
                    lista.setAdapter(adapter);
                }
            });

        }
    }
}
RiggsFolly
  • 93,638
  • 21
  • 103
  • 149
Tiago Coelho
  • 159
  • 6

2 Answers2

0

Check this line in your onCreate() method:

loadAllProducts.execute(String.valueOf(lista));

you can not get the string value of a ListView! If you want to get the value of a textView IN the listView, you could add an OnItemClick event to your listView and get the value of the textView in the selected list item like this:

//a variable, you could use from all the methods, that will have as a value the value of the selected TextView
private String selectedValue;

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
     View view = (View)v.getParent();  
     TextView textYouNeed = (TextView) view.findViewById(R.id.textViewId);
     selectedValue = textYouNeed.getText();
}

and then use this variable in the line I told about above:

loadAllProducts.execute(selectedValue);
Gabriella Angelova
  • 2,985
  • 1
  • 17
  • 30
0
06-19 11:07:34.233  13804-13804/? I/art﹕ Not late-enabling -Xcheck:jni (already on)
06-19 11:07:34.380  13804-13818/com.eu.agendamarinhagrande I/art﹕ Background sticky concurrent mark sweep GC freed 1879(132KB) AllocSpace objects, 0(0B) LOS objects, 11% free, 538KB/605KB, paused 49.704ms total 65.759ms
06-19 11:07:34.380  13804-13804/com.eu.agendamarinhagrande D/AndroidRuntime﹕ Shutting down VM
06-19 11:07:34.380  13804-13804/com.eu.agendamarinhagrande E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.eu.agendamarinhagrande, PID: 13804
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eu.agendamarinhagrande/com.eu.agendamarinhagrande.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setOnItemClickListener(android.widget.AdapterView$OnItemClickListener)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setOnItemClickListener(android.widget.AdapterView$OnItemClickListener)' on a null object reference
            at com.eu.agendamarinhagrande.MainActivity.onCreate(MainActivity.java:75)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Tiago Coelho
  • 159
  • 6
  • it is said, that the listView is null, so please can you debug and check after line `lista = (ListView) findViewById(R.id.agenda);` what value does `lista` have? – Gabriella Angelova Jun 19 '15 at 11:13
  • how to debug ? take the value lista? on text view? – Tiago Coelho Jun 19 '15 at 11:16
  • no, use the debugger (a small green bug icon) of Android Studio (or Eclipse) https://developer.android.com/tools/debugging/debugging-studio.html – Gabriella Angelova Jun 19 '15 at 11:18
  • Error running Android Debugger (8614):Unable to open debugger port (localhost:8714):java.net.ConnectException"connection refuse" – Tiago Coelho Jun 19 '15 at 11:41
  • sorry, but I can't see what is going on in your computer, so try to configure your debugger some how, for example with this question http://stackoverflow.com/questions/23615523/unable-to-open-debugger-port-java-net-socketexception-socket-closed or some other... Or just make a toast with the value of `lista` (alternative way for debugging) – Gabriella Angelova Jun 19 '15 at 11:44
  • you have reason my R.id is wrong now the error is E/JSON Parser﹕ Error parsing data org.json.JSONException: Value now my app runs but i cant see the events on my list view my list view have nothing – Tiago Coelho Jun 19 '15 at 15:15
  • Try to check what is the result of this line `Log.d("All Products: ", url_all_empresas.toString());` in your logcat. There you could see if the json result is the proper one or you have an exception while getting the json result from the url – Gabriella Angelova Jun 20 '15 at 09:27