我知道在 here 之前有人问过这类问题. 我已经尝试了两种手势检测器:
wholelistview.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
});
仅检测滑动(此处无法获取行位置)。
在getview中类似:
public View getView(int position, View convertView, ViewGroup parent) {
//other stuff
convertview.setOnTouchListener(same as above);
}
但无法检测到滑动。
有什么解决办法吗??? 我只想要进行滑动的行位置。
最佳答案
hanry 你得到了什么样的错误?我已经实现了它并且它工作得很好。但是我没有存储元素的位置,而是存储了 View 持有者,它在其他元素中也具有模型属性。请记住,您必须检查 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:如果您对 View 持有者和标签一无所知,我建议您查看 there . Frankenstein 提供的链接中描述了我的方法。
关于android - 滑动时获取 ListView 的行位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383040/