【问题标题】:getItemAtPosition() not returning value in listviewgetItemAtPosition()不在列表视图中返回值
【发布时间】:2010-10-19 05:47:59
【问题描述】:

我创建了一个自定义 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) 也会返回值。

在这方面需要紧急帮助,适配器类中有什么需要更改的吗??

【问题讨论】:

    标签: android listview adapter


    【解决方案1】:

    我把getItem(int position)方法改成了

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

    现在我称它为:

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

    所以它现在工作正常。

    【讨论】:

    • 你是个救命的人! 2 天以来,我一直在为我的第一个 android 应用程序解决这个问题!
    【解决方案2】:

    在您的适配器中您写道:

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

    所以这是按预期工作的,因为您将位置作为项目返回。

    【讨论】:

      猜你喜欢
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2012-09-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2017-08-03
      相关资源
      最近更新 更多