<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt1"
android:textSize="30px"
android:layout_width="60px"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"/>
<CheckBox
android:id="@+id/chbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
</RelativeLayout>
커서 아탑다 상속해서 커스텀했구요
public class CombiningCursorAdapter extends CursorAdapter {
public CombiningCursorAdapter(Context cntx,Cursor cursor)
{
super(cntx, cursor,true);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView text =(TextView)view.findViewById(R.id.txt1);
text.setText(cursor.getString(1));
//((TextView) view).setText(cursor.getString(1));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.list, parent, false);
return view;
//return view.findViewById(android.R.id.text1);
}
}
제가 지금 하고싶은건요 리스트 뷰에 텍스트와 체크박스를 두고 서로 각각 다른 이벤트를 주고싶은데
커서 아답터를 상속해서 바꿔봤는데요 체크박스가있으면 체크박스만 선택되고 옆에 텍스트는 아무런 반응이없고
체크를 없애면 텍스트를 선택하면 이벤트는 발생이 되는데 (TextView)parent.getChildAt(position) 이구문만 만나면
오류 나네요 ㅠㅠ
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
View popview =null;
TextView popt=null;
TextView text=(TextView)parent.getChildAt(position);// 오류
String value=text.getText().toString();
String poptext=DoSrch(value, "1");
popview = View.inflate(this,R.layout.text, null);
popt =(TextView)popview.findViewById(R.id.poptext);
popt.setText(poptext);
new AlertDialog.Builder(this).setTitle("해석").setView(popview).setPositiveButton("닫기",null).show();
}
09-06 04:59:40.184: INFO/dalvikvm(1081): Debugger has detached; object registry had 1 entries
09-06 04:59:40.184: DEBUG/dalvikvm(1081): VM cleaning up
09-06 04:59:40.213: ERROR/AndroidRuntime(1081): ERROR: thread attach failed
09-06 04:59:40.254: INFO/ActivityManager(52): Start proc paranoid.android for activity paranoid.android/.main: pid=1088 uid=10062 gids={3003, 1015}
09-06 04:59:40.284: DEBUG/dalvikvm(1081): LinearAlloc 0x0 used 639500 of 5242880 (12%)
09-06 04:59:40.504: DEBUG/ddm-heap(1088): Got feature list request
09-06 04:59:41.014: DEBUG/dalvikvm(1088): GC freed 766 objects / 56240 bytes in 98ms
09-06 04:59:41.705: INFO/ActivityManager(52): Displayed activity paranoid.android/.main: 1557 ms (total 1557 ms)
09-06 04:59:42.033: ERROR/gralloc(52): [unregister] handle 0x3c9378 still locked (state=40000001)
09-06 04:59:46.813: DEBUG/dalvikvm(699): GC freed 95 objects / 4000 bytes in 81ms
09-06 04:59:50.554: DEBUG/AndroidRuntime(1088): Shutting down VM
09-06 04:59:50.564: WARN/dalvikvm(1088): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
09-06 04:59:50.564: ERROR/AndroidRuntime(1088): Uncaught handler: thread main exiting due to uncaught exception
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): java.lang.ClassCastException: android.widget.RelativeLayout
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at paranoid.android.main.onItemClick(main.java:293)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.widget.ListView.performItemClick(ListView.java:3285)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.os.Handler.handleCallback(Handler.java:587)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.os.Handler.dispatchMessage(Handler.java:92)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.os.Looper.loop(Looper.java:123)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at android.app.ActivityThread.main(ActivityThread.java:4363)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at java.lang.reflect.Method.invokeNative(Native Method)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at java.lang.reflect.Method.invoke(Method.java:521)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-06 04:59:50.583: ERROR/AndroidRuntime(1088): at dalvik.system.NativeStart.main(Native Method)
09-06 04:59:50.593: INFO/Process(52): Sending signal. PID: 1088 SIG: 3
09-06 04:59:50.603: INFO/dalvikvm(1088): threadid=7: reacting to signal 3
09-06 04:59:50.603: ERROR/dalvikvm(1088): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
09-06 04:59:51.825: INFO/Process(1088): Sending signal. PID: 1088 SIG: 9
09-06 04:59:51.844: INFO/ActivityManager(52): Process paranoid.android (pid 1088) has died.
09-06 04:59:51.844: INFO/WindowManager(52): WIN DEATH: Window{43da66f8 paranoid.android/paranoid.android.main paused=false}
09-06 04:59:51.894: INFO/UsageStats(52): Unexpected resume of exam.ListOfViews while already resumed in paranoid.android
09-06 04:59:52.204: WARN/InputManagerService(52): Got RemoteException sending setActive(false) notification to pid 1088 uid 10062
09-06 05:13:00.214: DEBUG/dalvikvm(52): GC freed 16664 objects / 808104 bytes in 179ms
여기서 직속 하위를 찾는게 getChildAt입니다. 근데 문제는 님께서 리스트에 추가한 뷰는
RelativeLayout에 TextView를 넣은 식으로 구성이 되어있는거죠.
ListView-RelativeLayout-TextView 형식인데요.
여기서 ListView에 있는 직속 하위(RelativeLayout)를 TextView로 캐스팅할라고 하니 캐스팅에러가 나는겁니다.
textView를 얻기 위해서는
view.findById(R.id.poptext) 이런식으로 찾으셔야 합니다.