2014-10-19 59 views
0

我創建了自己的ListView類(擴展了的TouchEvent檢測)的Android擴展的ListView

public class MyListView extends ListView{ 
private ScaleGestureDetector myScaleDetector; 
private float myScaleFactor = 1.f; 

    public MyListView(Context context) { 
     super(context); 
     myScaleDetector = new ScaleGestureDetector(context, new myScaleListener()); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent e) { 
     myScaleDetector.onTouchEvent(e); 
     return super.onTouchEvent(e); 
    } 

    private class myScaleListener extends ScaleGestureDetector. 
      SimpleOnScaleGestureListener { 
     @Override 
     public void onScaleEnd(ScaleGestureDetector detector) { 
      int a=3; //just for breakpoint 
     } 
    } 

} 

我這是怎麼佈局contacts_activity.xml

<com.my.aclient.ui.MyListView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:id="@+id/listView"/> 

定義它,但應用也越來越上線的RuntimeException這個contacts_activity.xml文件被誇大

this.setContentView(R.layout.contacts_activity); 

報告錯誤在logcat的堆棧跟蹤

二進制XML文件行#106:錯誤充氣類 com.my.aclient.ui.MyListView

當我只用ListView的一切完美的作品。什麼會造成這個問題?

回答

1

因爲要創建一個自定義視圖,您必須實現三個不同的構造函數:

View(Context context) 
View(Context context, AttributeSet attrs) 
View(Context context, AttributeSet attrs, int defStyleAttr) 

然後你只需委託super()每個這些。所有這些構造函數對於從XML文件中擴展視圖都是必需的。

更簡單的解決方案是使用常規ListView並創建View.OnTouchListener的子類。然後,您只需在onCreate()方法內調用​​的ListView(如果您使用的是片段,則在onCreateView()中)。