Android:OnItemClickListener错误的查看位置

时间:2012-02-20 18:58:19

标签: android listview view position onitemclicklistener

我有一个带有自定义Baseadapter的Listview。我也设置了OnItemClickListener虽然被调用但看起来视图的位置不正确。

我想在点击的项目的位置显示一个QuickAction,而不是在正确的位置创建。 Quickaction(mBar)将视图作为参数获取并在特定位置绘制。我认为错误必须是视图的位置/布局参数。

听众:

    list.setOnItemClickListener(new OnItemClickListener()
    {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, final long selectedCourseid)
        {
            QuickActionBar mBar = new QuickActionBar(context);
            mBar.addQuickAction(new QuickAction(context, R.drawable.ic_menu_mark, "choose"));
            mBar.addQuickAction(new QuickAction(context, R.drawable.ic_menu_save, "details"));  

            mBar.setOnQuickActionClickListener(new OnQuickActionClickListener()
            {
                @Override
                public void onQuickActionClicked(QuickActionWidget widget, int position)
                {

                          ....

                }
            });

            mBar.show(view);

        }
    });

如何才能实现视图的位置参数设置正确?

在扩展Baseadapter中创建View的方法:

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

        ViewHolder holder;

        cursor.moveToPosition(position);

        if(convertView == null){
            convertView = mLayoutInflater.inflate(R.layout.test, null);

            holder = new ViewHolder();                
            holder.test = (TextView) convertView.findViewById(R.id.test);
            ...


    } else {
            holder = (ViewHolder) convertView.getTag();
    }

        holder.test.setText("test");
             ...


        return convertView;
    }

1 个答案:

答案 0 :(得分:0)

在上面的getView()方法中,只需在else {...}语句中添加以下行:

//This will update the position of the holder when the list updated.
holder.position = position 

我不知道是否有人找到答案,但有人可能会到这里试试以防万一。