2009-12-30 7 views
0

Ceci est l'un de ces cas où j'ai eu le code de travail, essayé d'ajouter quelque chose d'autre, puis constaté que mon code précédent a cessé de fonctionner. Il se bloque lorsque le programme démarre. L'erreur semble se situer avec la définition de la classe personnalisée ArrayAdapter, comme si j'essayais d'utiliser un adaptateur intégré, cela fonctionne très bien. De l'aide?Custom ArrayAdapter ne fonctionne pas?

public class MainEntry extends ListActivity{  

private String[] items = {"yay","yay2","asdfa","nlah","lipsum","orum","rawr"}; 



/** Called when the activity is first created. */ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setListAdapter(new IconicAdapter()); 
} 


class IconicAdapter extends ArrayAdapter { 
    IconicAdapter(){ 
     super(MainEntry.this, R.layout.post_obj, items); 
    } 

    public View getView(int pos, View convertView, ViewGroup parent){ 
     LayoutInflater inf = getLayoutInflater(); 

     View row = null; 
     if(convertView==null){ 
      inf.inflate(R.layout.post_obj, parent, false); 
     }else{ 
      row = convertView; 
     } 
     inf.inflate(R.layout.post_obj, parent, false); 

     TextView label = (TextView) row.findViewById(R.id.label); 
     label.setText(items[pos]); 

     ImageView image = (ImageView) row.findViewById(R.id.icon); 
     image.setImageResource(((Math.random()>.5)?R.drawable.wolfire:R.drawable.android)); //temp 

     return row; 
    } 

} 

}

Voici le journal de LogCat si elle aide:

12-29 23:43:49.968: INFO/ActivityManager(564): Start proc com.test.TestApp for 

activity com.test.TestApp/.MainEntry: pid=783 uid=10023 gids={1015} 
12-29 23:43:50.118: INFO/jdwp(783): received file descriptor 10 from ADB 
12-29 23:43:50.188: DEBUG/ddm-heap(783): Got feature list request 
12-29 23:43:50.318: WARN/ActivityThread(783): Application com.test.TestApp is waiting for the debugger on port 8100... 
12-29 23:43:50.348: INFO/System.out(783): Sending WAIT chunk 
12-29 23:43:50.348: INFO/dalvikvm(783): Debugger is active 
12-29 23:43:50.577: INFO/System.out(783): Debugger has connected 

12-29 23:43:50.577: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:50.638: INFO/ARMAssembler(564): generated scanline__00000077:03515104_00001001_00000000 [ 64 ipp] (84 ins) at [0x2c2900:0x2c2a50] in 1189200 ns 
12-29 23:43:50.778: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:50.987: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:51.187: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:51.387: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:51.597: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:51.800: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:52.003: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:52.206: INFO/System.out(783): waiting for debugger to settle... 
12-29 23:43:52.218: INFO/ActivityManager(564): Killing process com.test.TestApp (pid=783) at user's request 
12-29 23:43:52.228: INFO/Process(564): Sending signal. PID: 783 SIG: 9 
12-29 23:43:52.238: INFO/ActivityManager(564): Process com.test.TestApp (pid 783) has died. 
12-29 23:43:52.298: WARN/UsageStats(564): Unexpected resume of com.android.launcher while already resumed in com.test.TestApp 
12-29 23:43:52.348: WARN/InputManagerService(564): Window already focused, ignoring focus gain of: [email protected] 
12-29 23:43:57.517: DEBUG/dalvikvm(719): GC freed 726 objects/64112 bytes in 83ms 
+1

Pouvez-vous élaborer sur ce qui ne fonctionne pas maintenant, ou ce que vous voyez avec le code ci-dessus? –

+0

Ah, désolé. Il force juste se ferme au démarrage. – GuyNoir

+0

Envisagez d'ajouter des commentaires et JavaDoc, en particulier si vous publiez du code pour la lecture par d'autres. Deuxièmement, écrivez des tests unitaires. Cela vous aidera à détecter les changements de comportement. –

Répondre

0

Ahhh ... Je suis un idiot. Lol. Je n'ai pas défini 'row' sur la valeur de inf.inflate().

Facepalm Yup. Ne tenez pas compte de cela. J'espère que quelqu'un d'autre trouvera le code utile.

0

Vous avez raison (row = inf.inflate ...), et vous devriez avoir un NullPointerException. Plus, vous doit supprimer le deuxième appel inf.inflate(R.layout.post_obj, parent, false);. Sinon, vous perdrez l'optimisation accordée par le convertView ...