我正在使用List.get(position)
獲取ListView
的位置。 但是,這將返回當前滾動範圍頂部的位置。 我的ListView有50個項目,但一次只能看到10個項目。 所以,當你完全向下滾動並調用List.get(position)時,你會得到10的列表項目而不是50.如果你點擊ListView
的確切中間的項目,你會得到5而不是25等。Android:從實際頂端獲取ListView的位置
如何從實際頂部的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;
}
編輯:我認爲這是與調用onClickListener用錯viewHolder,但我不能完全看着辦吧......
可能重複(http://stackoverflow.com/questions/2001760/android-listview-get-data-index-of-visible-item) – 2013-02-28 13:26:42
@GrahamBorland這個問題是尋找第一個可見的位置,而不是重複。 – Geobits 2013-02-28 13:51:44
是的,我的職位目前給出了第一個可見的項目,但這正是我不想要的。 – 2013-02-28 13:54:33