【发布时间】:2020-03-18 23:22:15
【问题描述】:
我为我的学习做了一些项目,我想使用edittext创建列表视图搜索,它工作得很好。问题是当列表视图被过滤时,我尝试单击结果它会执行错误的操作。
然后我意识到这是因为我在点击操作时使用了列表视图位置,所以我尝试将其更改为列表视图值,但这对我来说非常困难,因为我在下面的代码中总是遇到错误。
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
TextView textView = (TextView) view;
String parameterNilai = String.valueOf(textView.getText());
if (parameterNilai.equals("One")) {
try {
Intent intent = new Intent(MurotalActivity.this, com.ummi.myapplication.speaker.MurotalActivityDetail.class);
intent.putExtra("TAG_SID", "229");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
closeKeyboard();
finish();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
} else if (parameterNilai.equals("Two")) {
try {
Intent intent = new Intent(MurotalActivity.this, com.ummi.myapplication.speaker.MurotalActivityDetail.class);
intent.putExtra("TAG_SID", "230");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
closeKeyboard();
finish();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
} else if (parameterNilai.equals("Three")) {
try {
Intent intent = new Intent(MurotalActivity.this, com.ummi.myapplication.speaker.MurotalActivityDetail.class);
intent.putExtra("TAG_SID", "231");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
closeKeyboard();
finish();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
对于列表数组如下:
<string-array name="listsurah">
<item>One</item>
<item>Two</item>
<item>Three</item>
</string-array>
我的布局 XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MurotalActivity"
xmlns:tools="http://schemas.android.com/tools">
<RelativeLayout
android:id="@+id/judul1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#A6E0BA"
android:gravity="center_vertical">
<EditText android:id="@+id/inputSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Cari Surat.."
android:inputType="textVisiblePassword"/>
</RelativeLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/judul1"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="9600dp"
android:layout_marginBottom="20dp"
android:choiceMode="singleChoice"
android:listSelector="#F0BCBC">
</ListView>
</RelativeLayout>
</ScrollView>
我从 logcat 得到的错误:
2020-03-19 06:14:37.593 30929-30929/com.mby.mbaca E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mby.mbaca, PID: 30929
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
at com.ummi.myapplication.MurotalActivity.onItemClick(MurotalActivity.java:109)
at android.widget.AdapterView.performItemClick(AdapterView.java:318)
at android.widget.AbsListView.performItemClick(AbsListView.java:1159)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136)
at android.widget.AbsListView$3.run(AbsListView.java:4052)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
基于上面的logcat问题就出在了
TextView textView = (TextView) view;
请需要任何人的帮助,我如何根据 ListItem 文本值而不是位置单击 ListItem
【问题讨论】: