Ханри, какие ошибки вы получаете? Я реализовал это, и он работает правильно. Но вместо того, чтобы сохранять положение элемента, я сохраняю держатель представления, который среди других также имеет свойство модели. Помните, что вы должны проверить, является ли convertview не нулевым. Посмотрите на код:
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
Model m = filter.subItems.get(position);
if(m != null)
{
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.rowlayout, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.position = position; - here you can put your position.
view.setOnTouchListener(this.listener);
//assign whatever you like to the viewHolder - in most cases the model and inlated controls and then assign
} else {
view = convertView;
}
view.setTag(viewHolder);
}
, а затем
public boolean onTouch(View v, MotionEvent event) {
ViewHolder viewHolder = ((ViewHolder) v.getTag());
}
хоп, который помогает.
PS: Если вы ничего не знаете о держателях и тегах просмотра, я бы посоветовал увидеть там . И мой подход был описан в ссылке, которую дал Франкенштейн.