2013-05-15 4 views
0

je veux faire une vue comme ci-dessous:Adapter Non Affichage Tout

enter image description here

pour le contrôle, je fait JSON dans mon variabel de classe, ceci est mon activité:

public class KategoriNomorPolis extends ListActivity{ 

    ListView lv_epolicy; 
    ArrayAdapter<String> adapter; 

    List<String> list = new ArrayList<String>(); 
    String[][] c = new String[10][10]; 

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

     adapter=new ArrayAdapter<String>(this,R.layout.list_item); 
     kategori_epolicy(); 
    } 

    private void kategori_epolicy(){ 
     String result=ListPolis.json_kategori; 
     JSONArray array=null; 
     try{ 
      array= new JSONArray(result); 
      for (int i=0;i<array.length();i++){ 
       JSONObject object = array.getJSONObject(i); 
       c[i][0] = object.getString("id_kategori"); 
       c[i][1] = object.getString("kategori"); 
//    adapter.insert(object.getString("kategori"), i); 
       System.out.println("yuhuuu"); 
      } 
      lv_epolicy=(ListView)findViewById(android.R.id.list); 
      KategoriEpolicyAdapter adapter = new KategoriEpolicyAdapter(KategoriNomorPolis.this, array); 
      lv_epolicy.setAdapter(adapter); 
      lv_epolicy.setCacheColorHint(Color.TRANSPARENT); 

     }catch (Exception e) { 

     Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 

I Je n'ai aucune idée pourquoi mon adaptateur ne montre rien, j'ai déclaré ma listview avec lv_epolicy=(ListView)findViewById(android.R.id.list); et rien ne se passe et ceci est mon KategoriEpolicyAdapter:

public class KategoriEpolicyAdapter extends BaseAdapter{ 
Context context; 
JSONArray array; 
int count; 
public KategoriEpolicyAdapter(Context context, JSONArray array){ 
    this.context = context; 
    this.array = array; 
    this.count = array.length(); 
} 

public int getCount() { 
    // TODO Auto-generated method stub 
    return count; 
} 

public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

public long getItemId(int arg0) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public View getView(int position, View contentView, ViewGroup arg2) { 
    // TODO Auto-generated method stub 

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    contentView = inflater.inflate(R.layout.epolicy_kategori, null); 

    ImageView img_epolicy = (ImageView)contentView.findViewById(R.id.img_epolicy); 
    TextView text_kategori = (TextView)contentView.findViewById(R.id.text_kategori); 
    String result=ListPolis.json_kategori; 
    try { 
     JSONObject object = array.getJSONObject(position); 
     text_kategori.setText(object.getString("kategori")); 
     System.out.println("bisa ga ya? "); 

     switch(position){ 
     case 0: 
       img_epolicy.setImageResource(R.drawable.pp_icon); 
      break; 
     case 1: 
       img_epolicy.setImageResource(R.drawable.tertanggung_icon); 
      break; 
     case 2: 
      img_epolicy.setImageResource(R.drawable.dataasuransi_icon); 
      break; 
     case 3: 
      img_epolicy.setImageResource(R.drawable.manfaat_icon); 
      break; 
     case 4: 
      img_epolicy.setImageResource(R.drawable.inventaris_icon); 
      break; 
     case 5: 
      img_epolicy.setImageResource(R.drawable.status_icon); 
      break; 
     case 6: 
      img_epolicy.setImageResource(R.drawable.rekening_icon); 
      break; 

     } 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 

    return contentView; 
} 

J'espère que quelqu'un peut me dire où est ma faute ....

+0

vérifier le lien pour un tutoriel http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/ – Raghunandan

+0

Obtenez-vous le tableau du réseau? –

Répondre

1

Vous ajoutez le tableau qui est tableau JSON. N'ajoutez pas de tableau json, ajoutez les éléments dans une liste et ajoutez la liste à la place du tableau.

KategoriEpolicyAdapter adapter = new KategoriEpolicyAdapter(KategoriNomorPolis.this, array); 

Il devrait ressembler à ça:

KategoriEpolicyAdapter adapter = new KategoriEpolicyAdapter(KategoriNomorPolis.this, list); 

Mieux voir cet adaptateur

TestListAdapter public class étend ArrayAdapter {

private LayoutInflater mInflater=null; 
private HttpImageManager mHttpImageManager=null;  
private ArrayList<SeedObject> listData=null; 


public TestListAdapter(Activity context,ArrayList<SeedObject> list, List<Uri> uris) { 
    super(context, 0, uris); 

    mInflater = context.getLayoutInflater(); 
    this.listData=list; 

    mHttpImageManager = ((TestApplication) context.getApplication()).getHttpImageManager(); 
} 


public View getView(int position, View convertView, ViewGroup parent) { 

    final ViewHolder holder; 

    if (convertView == null || convertView.getTag() == null) { 
     holder = new ViewHolder(); 
     convertView = mInflater.inflate(R.layout.custom_row, null); 

     holder.url = (TextView) convertView.findViewById(R.id.text_List); 
     holder.city = (TextView) convertView.findViewById(R.id.text_city); 
     holder.image = (ImageView) convertView.findViewById(R.id.image_List); 
     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    final Uri uri = getItem(position);   
    ImageView imageView = holder.image;  
    if(uri != null){ 
     Bitmap bitmap = mHttpImageManager.loadImage(new HttpImageManager.LoadRequest(uri, imageView));   
     if (bitmap != null) {    
      // image download now compress and set on Image view 
      bitmap = Bitmap.createScaledBitmap(bitmap, 60, 60, true); 
      imageView.setImageBitmap(bitmap); 
     }   
     else if(position %2== 0){ 
      imageView.setImageResource(R.drawable.greenseed_new); 
     } 
     else{ 
      imageView.setImageResource(R.drawable.grayseed_new); 
     } 

    } 

    //set the seed name 
    holder.url.setText(listData.get(position).getTitle()); 
    String distance =listData.get(position).getDistance(); 


    return convertView; 
} 

private static class ViewHolder { 
    ImageView image; 
    TextView city; 
    TextView url; 
} 

}

+0

tableau retourner à mon json comme vous voyez ci-dessus –

+0

Voilà pourquoi vous devez changer dans java aaray ce tableau json ou vous devez ajouter une chaîne de tableau json dans ArrayList et définir la liste avec adaptateur –

+0

alors comment gérer ma listview avec image ..? ou si j'ai fait un tableau Java, comment le gérer avec l'image? –

0

Deux choses.

Tout d'abord, y a-t-il une raison pour laquelle vous utilisez JSONArray et JSONObject? Bien que je ne sois pas sûr à 100%, je ne pense pas que vous puissiez sauvegarder votre adaptateur avec un JSONArray. Je pense que BaseAdapter n'accepte que les tableaux Java ordinaires ou l'objet List (ou l'une des sous-classes de List). Il serait préférable de ne pas utiliser d'objets JSON si vous n'êtes pas obligé de le faire. Si vous avez vraiment besoin d'utiliser un JSONArray, consultez this link. Il vous montrera comment analyser un JSONArray dans un tableau Java que vous pouvez utiliser dans votre adaptateur. Deuxièmement, je pense que le bloc try/catch dans votre méthode getView() peut être un autre problème. Vous l'avez attrapez toutes les exceptions, mais il ne sort rien pour vous faire savoir qu'il y a une exception si l'un est lancé. Ainsi, votre code peut ne pas s'exécuter correctement dans le getView() remplacée. Ajoutez un System.out.println() et un printStackTrace() au bloc de code de capture, réexécutez le code et vérifiez s'il affiche quelque chose.

0

Tout d'abord, vérifiez arra y n'est pas nul en débogage. Ensuite, vous pouvez essayer d'implémenter la méthode getItem() de l'adaptateur.

public Object getItem(int index) { 
    return array.get(index); 
} 

Et sur la méthode getView() ne reçoivent pas JSONObject de tableau directement. utilisez la méthode getItem(). A propos, l'adaptateur que vous avez implémenté va utiliser trop de mémoire. Vous devez faire attention à la méthode getView. Essayez d'utiliser contentView s'il n'est pas null.