How to get listitem text value when clicking on it?

I have a listitem and would like to get the text value of the clicked item. The following codes do not work for me.

It works fine when I change the following line:

String fullname = (String) l.getItemAtPosition(position); 

To:

 String fullname = "Hello world"; 

Thank you for your help.

 @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); String fullname = (String) l.getItemAtPosition(position); Intent bucket = new Intent(SQLView.this, SQLView2.class); Bundle b = new Bundle(); b.putString("fullname", fullname); bucket.putExtras(b); startActivity(bucket); } 

Here is the error I received in LogCat

 12-16 15:41:50.322: D/AndroidRuntime(279): Shutting down VM 12-16 15:41:50.322: W/dalvikvm(279): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 12-16 15:41:50.352: E/AndroidRuntime(279): FATAL EXCEPTION: main 12-16 15:41:50.352: E/AndroidRuntime(279): java.lang.ClassCastException: android.database.sqlite.SQLiteCursor 12-16 15:41:50.352: E/AndroidRuntime(279): at com.test.calculator.SQLView.onListItemClick(SQLView.java:52) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.app.ListActivity$2.onItemClick(ListActivity.java:321) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.widget.ListView.performItemClick(ListView.java:3382) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.os.Handler.handleCallback(Handler.java:587) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.os.Handler.dispatchMessage(Handler.java:92) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.os.Looper.loop(Looper.java:123) 12-16 15:41:50.352: E/AndroidRuntime(279): at android.app.ActivityThread.main(ActivityThread.java:4627) 12-16 15:41:50.352: E/AndroidRuntime(279): at java.lang.reflect.Method.invokeNative(Native Method) 12-16 15:41:50.352: E/AndroidRuntime(279): at java.lang.reflect.Method.invoke(Method.java:521) 12-16 15:41:50.352: E/AndroidRuntime(279): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 12-16 15:41:50.352: E/AndroidRuntime(279): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 12-16 15:41:50.352: E/AndroidRuntime(279): at dalvik.system.NativeStart.main(Native Method) 
+4
source share
4 answers

Change your code as if you are using SimpleCursorAdapter or CursorAdapter :

 @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); Cursor cursor = ((SimpleCursorAdapter)l.getAdapter()).getCursor(); cursor.moveToPosition(position); String fullname = cursor.getString(cursor.getColumnIndex("fullname")); Intent bucket = new Intent(SQLView.this, SQLView2.class); Bundle b = new Bundle(); b.putString("fullname", fullname); bucket.putExtras(b); startActivity(bucket); } 
+8
source

Try the following:

 String fullname = l.getItemAtPosition(position).toString(); 
+5
source

getItemAtPosition() returns the Object associated with this position.

So, check the return type of the class (perhaps the one you provided), and use the class methods to capture the actual text.

0
source

If the elements are TextView , then use

 String fullname = v.getText().toString(); 
0
source

All Articles