我有一个带有自定义 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;
}
在上面的 getView() 方法中,只需在 else {...} 语句中添加以下行:
//This will update the position of the holder when the list updated.
holder.position = position
我不知道是否有人找到答案,但有人可能会去这里尝试一下,以防万一。