Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Listview onClickItem函数不工作_Android_Listview_Android Listview_Onclick_Listitem - Fatal编程技术网

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();