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