次のコードを使用してアイテムのコンテンツにアクセスできません。なんで?私は何を間違っていますか?
- ListView の項目のカスタム レイアウトがあります。
- Activity は ListActivity ではなく単純なものです
- ItemLayout には、3 つの TextView と、おそらく画像があります。
- 項目をクリックすると、これらの TextViews で見つかった値を取得する必要があります。
それで、私の問題は何ですか?コードは次のとおりです。
listView1.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
{
AlertDialog.Builder adb = new AlertDialog.Builder(
MainActivity.this);
adb.setTitle("ListView OnClick");
RelativeLayout rl = (RelativeLayout) v.getParent();
TextView titlu = (TextView) rl.findViewById(R.id.txtTitle);
rl.findViewById(R.id.txtLocalitate);
adb.setMessage("Selected = "+ titlu.getText().toString());
adb.setPositiveButton("Ok", null);
adb.show();
}
});
私が行った場合
RelativeLayout rl = (RelativeLayout) arg0.getParent();
クリックしてもエラーは表示されませんが、AlertDialog に表示される値は最初の項目の値のみを表示します。だから、それは行く方法ではありません.上記のコードをそのままにしておくと、onItemClick で「強制的に閉じる」というエラーが表示されます。エラー ログは次の場所にあります。
07-30 18:36:09.903: W/dalvikvm(1304): threadid=1: thread exiting with uncaught exception (group=0x40015560)
07-30 18:36:09.914: E/AndroidRuntime(1304): FATAL EXCEPTION: main
07-30 18:36:09.914: E/AndroidRuntime(1304): java.lang.ClassCastException: android.widget.ListView
07-30 18:36:09.914: E/AndroidRuntime(1304): at softwarex.mycostomlistview.MainActivity$1.onItemClick(MainActivity.java:50)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.widget.ListView.performItemClick(ListView.java:3513)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.os.Handler.handleCallback(Handler.java:587)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.os.Looper.loop(Looper.java:123)
07-30 18:36:09.914: E/AndroidRuntime(1304): at android.app.ActivityThread.main(ActivityThread.java:3683)
07-30 18:36:09.914: E/AndroidRuntime(1304): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 18:36:09.914: E/AndroidRuntime(1304): at java.lang.reflect.Method.invoke(Method.java:507)
07-30 18:36:09.914: E/AndroidRuntime(1304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-30 18:36:09.914: E/AndroidRuntime(1304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-30 18:36:09.914: E/AndroidRuntime(1304): at dalvik.system.NativeStart.main(Native Method)