List.get(position)
の位置を取得するために使用していListView
ます。ただし、これは現在のスクロール境界の上からの位置を返します。私の ListView には 50 個の項目がありますが、一度に 10 個しか表示できません。したがって、完全に下にスクロールして List.get(position) を呼び出すと、リスト項目に対して 50 ではなく 10 が取得されます。項目のちょうど真ん中にある項目をクリックするListView
と、25 ではなく 5 が取得されます。
の実際の上部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を呼び出すことに関係があると思いますが、よくわかりません...