Android:OnItemClickListener 错误的视图位置

问题描述 投票:0回答:1

我有一个带有自定义 Baseadapter 的列表视图。我还设置了一个 OnItemClickListener,尽管它被调用,但似乎视图的位置不正确。

我想在单击的项目的位置显示一个快速操作,但它没有在正确的位置创建。 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;
    }
android listview view position onitemclicklistener
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.