2011-08-09 23 views
0

我想将TextView作为GestureOverlayView的子元素。在Android中从GestureOverlayView获取孩子

这里是我的看法XML代码:

<RelativeLayout android:layout_width="fill_parent" android:id="@+id/relativeLayout1" android:layout_height="wrap_content"> 
    <android.gesture.GestureOverlayView android:layout_height="wrap_content" android:id="@+id/gestureOverlayView1" android:layout_width="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentLeft="true"> 
     <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:id="@+id/linearLayout2" android:layout_height="wrap_content"> 
      <LinearLayout android:orientation="horizontal" android:weightSum="1" android:layout_width="260dp" android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:baselineAligned="false" android:layout_weight="0.32"> 
       <CheckBox android:id="@+id/sListCheckbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.32"></CheckBox> 
       <TextView android:text="TextView" android:id="@+id/sListText" android:layout_width="212dp" android:ems="15" android:layout_gravity="center" android:textAppearance="?android:attr/textAppearanceLarge" android:singleLine="true" android:layout_height="wrap_content" android:layout_weight="0.32"></TextView> 
      </LinearLayout> 
      <ImageView android:paddingRight="0dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="0.32" android:id="@+id/imageView1" android:src="@drawable/searchbutton"></ImageView> 
     </LinearLayout> 
    </android.gesture.GestureOverlayView> 
</RelativeLayout> 

,我试图达到的TextView这样的,但我对childText得到NullPointerException异常

adapterLine.gestureOverlayView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

if (gestureDetector.onTouchEvent(event)) { 

    RelativeLayout llt = (RelativeLayout) v.getParent(); 
    TextView childText = (TextView) llt.getChildAt(4); 
+0

程序崩溃在哪一行?你能发布异常/错误日志吗?我的猜测是你没有得到正确的父视图。请发布代码,你 得到v。 – Jack

+0

childText返回null – cagryInside

回答

0

我已经使用这个

RelativeLayout llt = (RelativeLayout) v.getParent(); 
GestureOverlayView gow = (GestureOverlayView) llt.getChildAt(0); 
LinearLayout ll1 = (LinearLayout) gow.getChildAt(0); 
LinearLayout ll2 = (LinearLayout) ll1.getChildAt(0); 
TextView childText = (TextView) ll2.getChildAt(1); 

解决我的问题,我不能在我的列表视图中使用

TextView childText = (TextView)findViewById(R.id.sListText); 

这一点,因为我得到v查看从我的运动事件侦听器,我不知道确切地说哪些textview正在返回。

+0

gestureOverlayview ontouchevent是否适合您?我无法得到它的工作 – Sarvesh

1

要调用的RelativeLayout LLT =(RelativeLayout的) v.getParent(); - >你的变量表示llt为LinearLayout, 但你得到一个RelativeLayout?试试这个:

LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout1); 
TextView childText = (TextView)ll.getChildAt(1); // it may be 2 depending on if the root is 0 or not, cant remember 

其实为什么不只是这样做:

TextView childText = (TextView)findViewById(R.id.sListText); 

+0

这是否解决了您的问题? – Jack