Reputation: 471
I am working on a project to test user behavior. Here is my XML layout
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
android:id="@+id/TouchArea"
android:layout_width="240dp"
android:layout_height="400dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#800ff4ff" >
<LinearLayout
android:id="@+id/grid1"
android:layout_width="60dp"
android:layout_height="100dp"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid2"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/grid1"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid3"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/grid2"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid4"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/grid3"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid5"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/grid1"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid6"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_below="@+id/grid2"
android:layout_toLeftOf="@+id/grid3"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid7"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignTop="@+id/grid6"
android:layout_toLeftOf="@+id/grid4"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid8"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignLeft="@+id/grid4"
android:layout_alignTop="@+id/grid7"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid9"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/grid10"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid10"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_below="@+id/grid6"
android:layout_toLeftOf="@+id/grid7"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid11"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignLeft="@+id/grid7"
android:layout_alignTop="@+id/grid10"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid12"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignBottom="@+id/grid11"
android:layout_alignParentRight="true"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid13"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/grid9"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid14"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignLeft="@+id/grid10"
android:layout_alignTop="@+id/grid13"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid15"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/grid11"
android:background="#FFFFFF"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/grid16"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/grid12"
android:background="#000000"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
And here is how it looks like, 16 girds inside a relative layout.
!
What I want to do is assign counter to each layout, whenever ueser's finger cross this grid the counter wll plus 1. However when I try to add touchListener and override the onTouch method it throws the null pointer exception so I need to call dispatchTouchEvent. But in dispatchTouchEvent I am not sure how to get each view seperately. Hope you can help
Upvotes: 1
Views: 236
Reputation: 3022
You could set android:clickable="true"
for each of your clickable layouts. Then you could implement OnClickListener
to catch each event.
public class MyClass implements View.OnClickListener {
// set your on click listeners in onCreate or something
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.grid1:
// do something
case R.id.grid2:
// do something
case R.id.grid3:
// do something
// etc
}
}
Upvotes: 1