2013-10-17 43 views
-1

我試圖讓我在我的自定義適配器getView添加的標籤,但事情是它給了當我試圖找回從getTag列表視圖ontouchlistener安卓

這裏我空越來越null是從代碼我的自定義適配器

public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 

     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.pull_refresh_list_item, null); 
      v.setTag(position); 

     } 

     RouteSummaryForStop i = null; 

     synchronized(methodLocker) { 
      i = bussData.get(position); 
     } 

     if (i != null) { 
       TextView bd = (TextView) v.findViewById(R.id.bus_destination); 
       TextView bn = (TextView) v.findViewById(R.id.bus_number); 
       ; 
        bn.setWidth(154); 

       bd.setText(i.getRouteHeading()); 
       bn.setText(i.getRouteNo()); 

     } 


     return v; 

    } 

這裏的getView是代碼,當我嘗試從列表視圖的ontouchlistener得到它:

result_list.setOnTouchListener(new OnTouchListener() { 
      private float startX; 
      private float startY; 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        startX = event.getX(); 
        startY = event.getY(); 
        Log.d("tag", ""+v.getTag()); 
        break; 
       case MotionEvent.ACTION_UP: { 
        float endX = event.getX(); 
        float endY = event.getY(); 
        if (isAClick(startX, endX, startY, endY)) { 
         Log.d("click", "clicked"); 
         Log.d("tag", ""+v.getTag()); 
         MainActivity.result_list.setSoundEffectsEnabled(true); 
         checkClicked = true; 
        }else{ 
         MainActivity.result_list.setSoundEffectsEnabled(false); 
         checkClicked = false; 
         if(isASwipe(startX, endX, startY, endY)){ 
          Log.d("tag", ""+(TextView)v.getTag()); 
          MainActivity.drawerLayout.openDrawer(Gravity.LEFT); 
         }else{ 

         } 
        } 
        break; 
       } 
       } 
       return false; 
      } 
     }); 

編輯+++++

我試了getview內,但它只能捕獲ACTIONDOWN:

v.setOnTouchListener(new OnTouchListener() { 

     private float startX; 
     private float startY; 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       startX = event.getX(); 
       startY = event.getY(); 
       Log.d("tag", "DOWN"); 
       break; 
      case MotionEvent.ACTION_UP: { 
       float endX = event.getX(); 
       float endY = event.getY(); 
       Log.d("click", "UP"); 
       if (isAClick(startX, endX, startY, endY)) { 
        Log.d("click", "UP");  
       }else{ 
        if(isASwipe(startX, endX, startY, endY)){ 
         Log.d("tag", "SWIPE"); 
        }else{ 

        } 
       } 
       break; 
      } 
      } 
      return false; 
     } 
    }); 
+0

你可以發佈堆棧軌跡 – Raghunandan

+0

@Raghunandan沒有錯誤。但是Log.d(「tag」,「」+ v.getTag());總是給我null –

+0

@Raghunandan它的作品,但我希望它在ontouch,所以我可以刷卡它。 –

回答

0

檢查的查看您得到在onTouchListener實例()。 ,因爲您已將onTouchListener設置爲ListView,您將在OnTouchListener中獲得ListView的實例,而不是ListView中的項目。

1

嘗試將onTouchListener設置爲適配器類中的convertView。

+1

這應該工作 – Raghunandan

+0

@Raghunandan我試過但它只捕獲actiondown檢查編輯 –

+0

發佈您的修改的適配器類 –