1

任何人都可以告訴我爲什麼我得到位置onSwipeRight()方法嗎?在ArrayApdapter getView()返回錯誤的位置

@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

是List ListView嗎? – 2014-08-29 07:57:51

+0

是這是一個列表視圖 – Soham 2014-08-29 07:59:13

+0

發佈你的'listviewlayout' xml – 2014-08-29 08:01:53

回答

1

我假定

Constants.list

是一個靜態變量。設置在其上的觸摸聽者

.setOnTouchListener(新OnSwipeTouchListener() 設置爲僅最後一排的這getView被稱爲所以你的邏輯只適用正確對於其getView被稱爲最後一個項目。

看到這是如何工作的嘗試登錄位置設置觸摸監聽器之前,你會注意到多少次getView被調用。

基本上getView每列表中的某一行需要時間被調用一次可以說,有5行可見喲你的屏幕與列表視圖。當列表第一次顯示時,getView將被調用5次,然後當您滾動時,將再次調用每個可見的行。當您向上滾動時,也會發生以前可見但由於向下滾動而消失的視圖。

+0

是的,你是對的。你可以給我解決方案如何使用它? – Soham 2014-08-29 08:06:30

+0

取決於你想要做什麼,如果它的正常使用情況下,你可能會設置觸摸偵聽器v而不是Constants.list。 – DArkO 2014-08-29 08:08:35

+0

我想 - 當在列表視圖中從左向右滑動時,應該在該視圖中添加一個按鈕。 – Soham 2014-08-29 08:16:55

0

getView將被調用n次,其中n是listview中的子數。

您在getView中設置了對Constant.list(總是相同的列表)的監聽器。

所以evry時間getView被調用一個新的列表器被設置爲Constant.list,然後Finnaly它將有最後一個列表器設置該位置。

相關問題