Autore Topic: Nullpoint on Listview custom adapeter.  (Letto 519 volte)

Offline alekals

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    windows seven and ubuntu
Nullpoint on Listview custom adapeter.
« il: 15 Gennaio 2013, 16:27:16 CET »
0
Codice (Java): [Seleziona]
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.json.JSONArray;


import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

public class ProjectActivity extends Activity{
        @Override
    public void onCreate(Bundle savedInstanceState) {
                Log.d ("TaskFreak3","ProjectActivity called!!");
                super.onCreate(savedInstanceState);
                ListView list = (ListView) findViewById(R.id.ListViewProject);
                //list.setClickable(true);
               
                final List<ProjectTask> listOfProjectTask = new ArrayList<ProjectTask>();
               
                String url ="+++++REMOVED ++++++    pagina.php";
               
                HashMap<String, String> hashPostParams = new HashMap<String, String>();
                hashPostParams.put("request", "prj");
                hashPostParams.put("member",MainActivity.memberId);
                       
                String readTwitterFeed = null;
                try {
                        readTwitterFeed = Service.RemoteRequest(url,hashPostParams);
                } catch (UnsupportedEncodingException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
               
                if (! readTwitterFeed.equals("")){
                        try {
                                JSONArray jsonArray = new JSONArray(readTwitterFeed);
                             
                            for (int i = 0; i < jsonArray.length(); i++){
                               
                               
                               listOfProjectTask.add(new ProjectTask(jsonArray.getJSONObject(i).getString("prjId"),
                                                                jsonArray.getJSONObject(i).getString("name")
                                                                ,jsonArray.getJSONObject(i).getString("description")));
                            }
                     
                        } catch (Exception e) {
                                Toast.makeText(this, "Exception" + e,Toast.LENGTH_LONG).show();
                            e.printStackTrace();
                        }
                }else{
                        Log.d("TaskFreak3", "Return blank string service remote request.");
                }
               
                Log.d("TaskFreak3","Trovati "+listOfProjectTask.size()+" progetti");
                for(int i = 0; i < listOfProjectTask.size(); i++) {  
                        Log.d("TaskFreak3",listOfProjectTask.get(i).toString());
                }
               
                PrjTaskAdapter adapter = new PrjTaskAdapter(this, listOfProjectTask);
               
       
               
                list.setOnItemClickListener(new OnItemClickListener() {
               
                    @Override
                    public void onItemClick(AdapterView<?> arg0, View view, int position, long index) {
                       
                        String prjId = listOfProjectTask.get(position).getId();
                        Log.d ("TASKFREAK3","Selezionato project numer: "+prjId);
                       
                        //Intent NewIntent = new Intent(this, ItemActivity.class);
                        //startActivityForResult(NewIntent, 0);
                       
                       
                        //Bundle bundle = new Bundle();
                        //bundle.putString("prjId",prjId);
                        //NewIntent.putExtras(bundle);
                        //startActivityForResult(NewIntent, 0);
                        //startActivity(NewIntent);
                       
                       //showToast(listOfProjectTask.get(position).getName());
                       
                    }  
                });
               
                list.setAdapter(adapter);
               
        }//end onCreate

}



Codice (Java): [Seleziona]
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;

public class PrjTaskAdapter extends BaseAdapter implements OnClickListener {
       
            Context context;

            List<ProjectTask> listProjectTask;

            public PrjTaskAdapter(Context context, List<ProjectTask> listProjectTask) {
                this.context = context;
                this.listProjectTask = listProjectTask;
            }

            public int getCount() {
                return listProjectTask.size();
            }

            public Object getItem(int position) {
                return listProjectTask.get(position);
            }

            public long getItemId(int position) {
                return position;
            }

            public View getView(int position, View convertView, ViewGroup viewGroup) {
                ProjectTask entry = listProjectTask.get(position);
                if (convertView == null) {
                    LayoutInflater inflater = (LayoutInflater) context
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    convertView = inflater.inflate(R.layout.prj_task_row, null);
                }
               
                /*TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
                tvName.setText(entry.getName());*/


                TextView tvDescr = (TextView) convertView.findViewById(R.id.tvDescr);
                tvDescr.setText(entry.getDescr());

                // Set the onClick Listener on this button
                //Button btnRemove = (Button) convertView.findViewById(R.id.btnRemove);
                //btnRemove.setFocusableInTouchMode(false);
                //btnRemove.setFocusable(false);
                //btnRemove.setOnClickListener(this);
                // Set the entry, so that you can capture which item was clicked and
                // then remove it
                // As an alternative, you can use the id/position of the item to capture
                // the item
                // that was clicked.
                //btnRemove.setTag(entry);

                // btnRemove.setId(position);
               

                return convertView;
            }

            //@Override
            public void onClick(View view) {
                ProjectTask entry = (ProjectTask) view.getTag();
                listProjectTask.remove(entry);
                // listPhonebook.remove(view.getId());
                notifyDataSetChanged();

            }

            private void showDialog(ProjectTask entry) {
                // Create and show your dialog
                // Depending on the Dialogs button clicks delete it or do nothing
               
            }

}

LOGCAT: NULLPOINT appena provo a list.setAdapter(adapter);


01-15 16:21:29.917: E/AndroidRuntime(16680): FATAL EXCEPTION: main
01-15 16:21:29.917: E/AndroidRuntime(16680): java.lang.RuntimeException: Unable to start activity ComponentInfo{ProjectActivity}: java.lang.NullPointerException
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.os.Looper.loop(Looper.java:137)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.ActivityThread.main(ActivityThread.java:4745)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at java.lang.reflect.Method.invokeNative(Native Method)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at java.lang.reflect.Method.invoke(Method.java:511)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at dalvik.system.NativeStart.main(Native Method)
01-15 16:21:29.917: E/AndroidRuntime(16680): Caused by: java.lang.NullPointerException
01-15 16:21:29.917: E/AndroidRuntime(16680):    at it.tresistemi.taskfreak3.ProjectActivity.onCreate(ProjectActivity.java:75)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.Activity.performCreate(Activity.java:5008)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
01-15 16:21:29.917: E/AndroidRuntime(16680):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
01-15 16:21:29.917: E/AndroidRuntime(16680):    ... 11 more



Non capisco perche da il nullpoint.

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Nullpoint on Listview custom adapeter.
« Risposta #1 il: 15 Gennaio 2013, 16:43:59 CET »
0
Sicuro che dopo:
Codice (Java): [Seleziona]
 ListView list = (ListView) findViewById(R.id.ListViewProject);
list sia diverso da null?
Vedo che hai un id custom, quindi presumo che ProjectActivity lavori con un layout che hai preparato tu; se è così manca il setContentView per dire all'activity il layout da usare

Offline alekals

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy nexus
  • Sistema operativo:
    windows seven and ubuntu
Re:Nullpoint on Listview custom adapeter.
« Risposta #2 il: 15 Gennaio 2013, 17:48:17 CET »
0
Ho perso mezza giornata.
quando guardi il tuo codice finisce per impararlo a memoria e il tuo cervello non vede gli errori piu stupidi, non li vede proprio.

mancava sempricemente prima di   ListView list = (ListView) findViewById(R.id.ListViewProject);

la: setContentView(R.layout.activity_main);

La set del content view, che è sparita quando ho riordinato il codice.

Grazie infinite per l'aiuto!!!