Android Listview onClickItem函数不工作
我正在使用Android Listview onClickItem函数不工作,android,listview,android-listview,onclick,listitem,Android,Listview,Android Listview,Onclick,Listitem,我正在使用String类型的ArrayAdapter和自定义布局,而不是android.R.layout.simple\u list\u item\u 1,但当我单击列表项时,我的应用程序崩溃。 这是我的日志 07-09 20:48:35.549: E/AndroidRuntime(1822): FATAL EXCEPTION: main 07-09 20:48:35.549: E/AndroidRuntime(1822): java.lang.ClassCastException: andro
String
类型的ArrayAdapter
和自定义布局,而不是android.R.layout.simple\u list\u item\u 1
,但当我单击列表项时,我的应用程序崩溃。
这是我的日志
07-09 20:48:35.549: E/AndroidRuntime(1822): FATAL EXCEPTION: main
07-09 20:48:35.549: E/AndroidRuntime(1822): java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
07-09 20:48:35.549: E/AndroidRuntime(1822): at com.faisalahsan.healthdroid.DoctorCategoryListActivity$1.onItemClick(DoctorCategoryListActivity.java:55)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.widget.AbsListView.performItemClick(AbsListView.java:1066)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2522)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.widget.AbsListView$1.run(AbsListView.java:3182)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.os.Handler.handleCallback(Handler.java:605)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.os.Handler.dispatchMessage(Handler.java:92)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.os.Looper.loop(Looper.java:137)
07-09 20:48:35.549: E/AndroidRuntime(1822): at android.app.ActivityThread.main(ActivityThread.java:4424)
07-09 20:48:35.549: E/AndroidRuntime(1822): at java.lang.reflect.Method.invokeNative(Native Method)
07-09 20:48:35.549: E/AndroidRuntime(1822): at java.lang.reflect.Method.invoke(Method.java:511)
07-09 20:48:35.549: E/AndroidRuntime(1822): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
07-09 20:48:35.549: E/AndroidRuntime(1822): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
07-09 20:48:35.549: E/AndroidRuntime(1822): at dalvik.system.NativeStart.main(Native Method)
这是我的活动代码
public class DoctorCategoryListActivity extends ListActivity {
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_doctor_category_list);
String[] doctorCategories = {"Acupuncturist", "Addiction Specialist"};
mListView = (ListView) findViewById(android.R.id.list);
mListView = getListView();
ArrayAdapter<String> mAdapte = new ArrayAdapter<String>(DoctorCategoryListActivity.this,
R.layout.layout_doctor_catagory_list_item, R.id.tv_doctor_catagory_list_item, doctorCategories);
mListView.setAdapter(mAdapte);
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// selected item
String speciality = ((TextView) view).getText().toString();
Toast.makeText(DoctorCategoryListActivity.this, speciality+" clicked", Toast.LENGTH_SHORT).show();
}
});
}
}
在onclickitem方法中,您应该执行
view.findViewById(Textview)
而不是((Textview)视图).getText().toString()代码>在methode onItemClick中收到的视图是在ArrayAdapters构造函数中传递的整个Listview项。在你的情况下,整个视图是
LinearLayout
----TextView
----View(Spacer)
你应使用:
TextView tv = (TextView)view.findViewById(R.id.tv_doctor_catagory_list_item);
String speciality = tv.getText().toString();
传递给onItemClick()
的视图是项布局的最外层视图(即layout\u doctor\u category\u list\u item.xml中的LinearLayout
),而您提供的资源id标识了其中的TextView
。提供您的doctorCategoryListactivitI的代码,我会检查以确保您实现了正确的接口,该接口将是View.OnItemClickListener。错误表明您有强制转换问题。您正在执行无效强制转换,很可能您混淆了视图的ID
:java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.TextView
我已更新了我的问题。
TextView tv = (TextView)view.findViewById(R.id.tv_doctor_catagory_list_item);
String speciality = tv.getText().toString();