我使用ArrayAdapter
类型String
自定义布局而不是android.R.layout.simple_list_item_1
,但是当我点击列表项,然后我的应用程序崩溃。 这是我的logcat。Listview onClickItem函数不能正常工作
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梅索德XML代码layout_doctor_catagory_list_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_doctor_catagory_list_item"
android:layout_width="match_parent"
android:layout_height="43dp"
android:text="Test"
android:textSize="18sp"
android:gravity="center_vertical|left"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"/>
<View
android:layout_width="fill_parent"
android:layout_height="0.5dp"
android:layout_marginLeft="10dp"
android:background="@android:color/darker_gray"/>
</LinearLayout>
提供您的DoctorCategoryListActivity –
的代码我会检查以确保您已经实现了正确的接口,它将是View.OnItemClickListener。错误表示您有投射问题。 – Eenvincible
你正在执行无效转换,很可能你混淆了你的'Views'的id:java.lang.ClassCastException:android.widget.LinearLayout不能转换为android.widget.TextView' –