2010-10-19 18 views
2

J'ai créé une classe d'adaptateur de base personnalisée pour remplir une vue de liste avec une image et du texte. Le code de classe est comme ci-dessous:getItemAtPosition() ne renvoie pas de valeur dans listview

public class ViewAdapter extends BaseAdapter { 

private Activity activity; 
private String[] data; 
private static LayoutInflater inflater=null; 
public ImageLoader imageLoader; 
private ArrayList<String> items; 

public ViewAdapter(Activity a, ArrayList<String> items,String[] d) { 
    this.items = items;  
    activity = a; 
    data=d; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    imageLoader=new ImageLoader(activity.getApplicationContext()); 
} 

public int getCount() { 
    return data.length; 
} 

public Object getItem(int position) { 
    return position; 
} 

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

public static class ViewHolder{ 
    public TextView text; 
    public ImageView image; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    ViewHolder holder; 
    if(convertView==null){ 
     vi = inflater.inflate(R.layout.sectionview, null); 
     holder=new ViewHolder(); 
     holder.text=(TextView)vi.findViewById(R.id.txtLogoName);; 
     holder.image=(ImageView)vi.findViewById(R.id.imgBrandLogo); 
     vi.setTag(holder); 
    } 
    else 
     holder=(ViewHolder)vi.getTag(); 

    holder.text.setText(items.get(position)); 
    holder.image.setTag(data[position]); 
    imageLoader.DisplayImage(data[position], activity, holder.image); 
    return vi;  
} 

}

jusqu'à présent la liste travaille bien, mais quand j'utilise le code ci-dessous pour obtenir la valeur de l'élément à poisition particulier, mais au lieu de valeur, il renvoie la position de l'élément de la vue de liste.

à savoir le code J'utilise est

public void onItemClick(AdapterView<?> parent, View V, int position, long arg3) { 

       System.out.println("****SELECTED VALUES " Parent.getItemAtPosition(position)); 

    }); 

Même en utilisant getItemIdAtPosition (position) est de retour aussi la valeur.

Besoin d'aide urgente à ce sujet, y a-t-il quelque chose à changer dans la classe d'adaptateur?

Répondre

9

j'ai changé la méthode getItem (position int) pour

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

et maintenant je l'appelle comme:

System.out.println("****SELECTED VALUES " + secAdap.getItem(position)); 

et donc son travail bien maintenant.

+0

vous êtes un homme de sauvetage! J'ai essayé de résoudre cela depuis 2 jours pour ma première application Android! – nLL

+0

Vous répondez à ma volonté poser question .... merci: D –

3

Dans votre carte vous avez écrit:

public Object getItem(int position) { 
    return position; 
} 

Alors que cela fonctionne comme prévu puisque vous retournez la position de l'élément.