getItemAtPosition() не возвращает значение в списке

Я создал собственный класс Base Adapter, чтобы заполнить представление списка изображением и текстом. Код класса, как показано ниже:

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;    
}

}

пока список работает без сбоев, но когда я использую приведенный ниже код для получения значения элемента в определенном месте, но вместо значения он возвращает позицию элемента представления списка.

т.е. код, который я использую

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

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

    });

Даже использование getItemIdAtPosition (position) также возвращает значение.

Нужна срочная помощь по этому вопросу, есть ли что-то, что нужно изменить в классе адаптера?

2 ответа

Решение

Я изменил метод getItem(int position) на

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

и теперь я называю это как:

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

и теперь он работает нормально.

В вашем адаптере вы написали:

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

Так что это работает, как и ожидалось, так как вы возвращаете позицию как элемент.

Другие вопросы по тегам