【发布时间】:2013-02-28 13:13:04
【问题描述】:
我正在使用List.get(position) 来获取ListView 的位置。
但这会返回当前滚动边界顶部的位置。
我的 ListView 有 50 个项目,但一次只能看到 10 个。
因此,当您完全向下滚动并调用 List.get(position) 时,您会为列表项获得 10 而不是 50。如果您单击 ListView 正中间的项目,您会获得 5 而不是 25 等等。
如何从ListView 的实际 顶部获取ListView 的位置。至少是最简单的方法。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.addtowatchlist, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.label);
viewHolder.addbutton = (Button) view.findViewById(R.id.button);
viewHolder.addbutton
.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View buttonview) {
//I need the correct ACTUAL position here, not the VISABLE position
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(list.get(position).getUrl()));
context.startActivity(browserIntent);
list.get(position).getUrl();
Model element = (Model) viewHolder.addbutton
.getTag();
element.setSelected(true);
}
});
view.setTag(viewHolder);
viewHolder.addbutton.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).addbutton.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getName());
return view;
}
编辑:我认为这与使用错误的 viewHolder 调用 onClickListener 有关,但我无法弄清楚...
【问题讨论】:
-
@GrahamBorland 这个问题是寻找第一个可见位置,而不是重复。
-
是的,我的位置目前给出了第一个可见项目,但这正是我不想要的。
-
哎呀,你是对的。对不起。如果关闭,我将投票重新开放。