2012-04-05 7 views
0

Ich baue eine app Listenansicht und faul Adapter basierend auf @fedor Post mit auf dieser linkAndroid: immer zwingen schließen

hier ist meine erste Tätigkeit:

public class MenuViewAll extends ListActivity { 

// url to make request 
private static String url = "http://10.0.2.2/culigui/getdataresto.php"; 
//public static String TAG_NAME,TAG_ADDRESS; 
static final String KEY_ID = "id"; 
static final String KEY_NAME = "name"; 
static final String KEY_ADDRESS = "address"; 
static final String KEY_THUMB = "linkthumb"; 

ListView list; 
LazyAdapter adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu_view_all); 

    // Hashmap for ListView 
    ArrayList<HashMap<String, String>> userList = new ArrayList<HashMap<String, String>>(); 

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

    // getting JSON string from URL 
    JSONObject json = jParser.getJSONFromUrl(url); 

    try { 
     // Getting JSONArray of listresto 
     JSONArray listresto = json.getJSONArray("listresto"); 

     // looping through All listresto 
     for(int i = 0; i < listresto.length(); i++){ 
      HashMap<String, String> map = new HashMap<String, String>();  
      JSONObject list = listresto.getJSONObject(i); 


      // insert String to Local Variable 
      map.put(KEY_ID, list.getString("id_resto")); 
      map.put(KEY_NAME, list.getString("nama_resto")); 
      map.put(KEY_ADDRESS, list.getString("alamat_resto")); 
      map.put(KEY_THUMB, list.getString("thumb_img")); 
      userList.add(map); 


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


    /** 
    * Updating parsed JSON data into ListView 
    * */ 



    adapter = new LazyAdapter(this, userList); 
    list.setAdapter(adapter); 

    // ListView yourListView = getListView() 

}

und hier ist mein faul Adapterklasse:

public class LazyAdapter extends BaseAdapter { 

private Activity activity; 
private ArrayList<HashMap<String, String>> data; 
private static LayoutInflater inflater=null; 
public ImageLoader imageLoader; 

public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
    activity = a; 
    data=d; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    imageLoader=new ImageLoader(activity.getApplicationContext()); 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return data.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; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View vi=convertView; 
    if(convertView==null) 
     vi = inflater.inflate(R.layout.listitemviewall, null); 

    TextView namaresto = (TextView)vi.findViewById(R.id.name); // resto name 
    TextView alamatresto = (TextView)vi.findViewById(R.id.address); // resto address 
    ImageView thumb_image=(ImageView)vi.findViewById(R.id.defaultthumb); // thumb image 

    HashMap<String, String> resto = new HashMap<String, String>(); 
    resto = data.get(position); 

    // Setting all values in listview 
    namaresto.setText(resto.get(MenuViewAll.KEY_NAME)); 
    alamatresto.setText(resto.get(MenuViewAll.KEY_ADDRESS)); 
    imageLoader.DisplayImage(resto.get(MenuViewAll.KEY_THUMB), thumb_image); 
    return vi; 
}} 

und nachdem ich meinen Code ausführen, dann ist hier die logcat :

04-05 14:51:32.714: D/dalvikvm(311): GC_EXTERNAL_ALLOC freed 869 objects/60304 bytes in 76ms 
04-05 14:51:46.235: D/dalvikvm(311): GC_EXTERNAL_ALLOC freed 757 objects/43592 bytes in 362ms 
04-05 14:51:46.945: D/AndroidRuntime(311): Shutting down VM 
04-05 14:51:46.945: W/dalvikvm(311): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
04-05 14:51:46.975: E/AndroidRuntime(311): FATAL EXCEPTION: main 
04-05 14:51:46.975: E/AndroidRuntime(311): java.lang.RuntimeException: Unable to start activity ComponentInfo{last.project.CuliGUI/last.project.CuliGUI.MenuViewAll}: java.lang.NullPointerException 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.os.Looper.loop(Looper.java:123) 
04-05 14:51:46.975: E/AndroidRuntime(311): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-05 14:51:46.975: E/AndroidRuntime(311): at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 14:51:46.975: E/AndroidRuntime(311): at java.lang.reflect.Method.invoke(Method.java:521) 
04-05 14:51:46.975: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-05 14:51:46.975: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-05 14:51:46.975: E/AndroidRuntime(311): at dalvik.system.NativeStart.main(Native Method) 
04-05 14:51:46.975: E/AndroidRuntime(311): Caused by: java.lang.NullPointerException 
04-05 14:51:46.975: E/AndroidRuntime(311): at  last.project.CuliGUI.MenuViewAll.onCreate(MenuViewAll.java:102) 

mein Programm immer in der Nähe zwingen ... vielleicht kann mir jemand helfen ...

+0

erzählen Sie Ihre Linie no.102 in MenuViewAll –

Antwort

1

Sie die Aufmerksamkeit auf diesen Teil des Fehlers bezahlen sollen:

04-05 14:51:46.975: E/AndroidRuntime(311): Caused by: java.lang.NullPointerException 
04-05 14:51:46.975: E/AndroidRuntime(311): at  last.project.CuliGUI.MenuViewAll.onCreate(MenuViewAll.java:102) 

Und vor allem:

MenuViewAll.java:102 

Das bedeutet, dass etwas in dieser Zeile (Ich zähle nicht die l ines :)) ist NULL, aber Sie versuchen, es zu verwenden. Suchen Sie nach der Verwendung eines Objekts, das NULL

sein könnte

Beispiel (nur ein Beispiel, weil ich nicht weiß, welche Zeile es ist). Lässt diese Zeile sagen:

JSONObject list = listresto.getJSONObject(i); 

aus irgendeinem Grund schief geht. (Es gibt keine JSONobjecti, listresto ist falsch, weiß ich nicht). Dann später dazu:

 map.put(KEY_ID, list.getString("id_resto")); 

eine Nullpointer geben, wie Sie nicht getString auf einem NULL Objekt tun kann.

so:

  • finden die Linie
  • finden das Objekt
  • fixieren den Grund, warum es NULL ist, oder stellen Sie sicher, damit umgehen vorher
  • ...
  • Gewinn
+0

danke @Nanne ... ich bekomme ich t ... mein fauler Adapter kann nun das Bild aus der Datenbank anzeigen. aber es gibt ein weiteres Problem, auf dem faulen Adapter: namaresto.setText (resto.get (MenuViewAll.KEY_NAME)); alamatresto.setText (resto.get (MenuViewAll.KEY_ADDRESS)); imageLoader.DisplayImage (resto.get (MenuViewAll.KEY_THUMB), thumb_image); Rückkehr vi; dieser Code oben sollte KEY_NAME von MenuViewAll Klasse zu ersten Textansicht und KEY_ADDRESS zu zweiten Textansicht .. aber in der Tat, beide Textansicht zeigen die KEY_THUMB ... hoffe du kannst mir helfen.wiederum. danke b4. –

+0

Sie machen besser eine andere Frage dafür? wäre einfacher. Wenn Sie es hier verlinken, schaue ich es mir an, und andere Leute können die Frage auch finden;) – Nanne

+0

hier ist der Link meiner neuen Frage @Nanne ... vielleicht können Sie einen Blick darauf werfen. danke b4. http://stackoverflow.com/questions/10116280/textview-on-lazyadapter-display-wrong-data –

Verwandte Themen