有谁能告诉我为什么我要获得位置onSwipeRight()方法?
@Override
public View getView(final int position, View view, ViewGroup parent) {
View v = view;
if(v==null){
LayoutInflater inflater = context.getLayoutInflater();
v = inflater.inflate(R.layout.listviewlayout, null);
holder=new ViewHolder();
holder. txtTitle = (TextView) v.findViewById(R.id.label);
holder. date = (TextView) v.findViewById(R.id.textView1);
holder. time = (TextView) v.findViewById(R.id.textView2);
holder. b=(Button) v.findViewById(R.id.button1);
v.setTag(holder);
Constants.list.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeTop() {
// Toast.makeText(SavedList.this, "top", Toast.LENGTH_SHORT).show();
}
public void onSwipeRight() {
// Toast.makeText(SavedList.this, "right", Toast.LENGTH_SHORT).show();
holder.b.setVisibility(View.VISIBLE);
int a=position;
Log.e("ds",String.valueOf(a));
}
public void onSwipeLeft() {
//Toast.makeText(SavedList.this, "left", Toast.LENGTH_SHORT).show();
}
public void onSwipeBottom() {
//Toast.makeText(SavedList.this, "bottom", Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:1)
我假设
Constants.list
是一个静态变量。使用
设置触控侦听器.setOnTouchListener(new OnSwipeTouchListener() 仅设置为调用getView的最后一行,因此您的逻辑仅适用于调用getView的最后一项。
要查看其工作原理,请在设置触摸侦听器之前尝试记录位置。您将注意到调用getView的次数。
每次需要显示列表中的行时,基本上会调用一次getView。让我们说屏幕上有5行可见listView。当列表首次显示时,getView将被调用5次,然后当您滚动时,将再次为每个可见的行调用它。当您向上滚动时,这也会发生之前可见但由于向下滚动而消失的视图。
答案 1 :(得分:0)
getView将被多次调用,其中n是listview中的数字od子项。
您正在getView中将侦听器设置为Constant.list(始终为相同的列表)。
所以,getView被称为新lister的时间被设置为Constant.list,然后finnaly它将设置该位置的最后一个lister。