Java 在listview中使用searchview功能时,保持复选框处于选中状态
我是编程新手,几天来一直在寻找解决问题的方法 我用searchview创建了一个listview,然后添加了复选框。 复选框的问题是,当你搜索某样东西时,它们不会保持它们的位置。 例如: 如果我有5个字 项目1 奶酪 项目2 香肠 项目3 面包 项目4 番茄酱 项目5 柠檬 我检查第一个单词(项目1奶酪)并搜索柠檬(项目5),柠檬被检查,因为它位于第一个位置(项目1) 图片示例:Java 在listview中使用searchview功能时,保持复选框处于选中状态,java,android,listview,checkbox,searchview,Java,Android,Listview,Checkbox,Searchview,我是编程新手,几天来一直在寻找解决问题的方法 我用searchview创建了一个listview,然后添加了复选框。 复选框的问题是,当你搜索某样东西时,它们不会保持它们的位置。 例如: 如果我有5个字 项目1 奶酪 项目2 香肠 项目3 面包 项目4 番茄酱 项目5 柠檬 我检查第一个单词(项目1奶酪)并搜索柠檬(项目5),柠檬被检查,因为它位于第一个位置(项目1) 图片示例: 检查第一个位置: 检查一个单词并搜索它 如何设置检查的不是位置而是名称? 我在想,如果你可以用一个数组来做这
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Intent;
import android.icu.text.Transliterator;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.SparseBooleanArray;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.navigation.NavigationView;
import java.lang.reflect.Array;
import java.text.DateFormatSymbols;
import java.util.ArrayList;
public class StorageActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
ListView listView;
String[] spices = {"Ajowan","Anis","Annatto","Bergkümmel","Betram","Brotklee","Eberraute","Essigbaum","Harissa","Herbes","Ingwer","Knoblauch","Koriander","Mandel"};
SearchView searchView;
ArrayList<String> selected = new ArrayList<>();
ArrayAdapter<String> arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_storage);
listView = findViewById(R.id.lvspices);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice,spices);
listView.setAdapter(arrayAdapter);
searchView = findViewById(R.id.search_spices);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
StorageActivity.this.arrayAdapter.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
StorageActivity.this.arrayAdapter.getFilter().filter(newText);
return false;
}
});
import androidx.annotation.NonNull;
导入androidx.annotation.VisibleForTesting;
导入androidx.appcompat.app.ActionBarDrawerToggle;
导入androidx.appcompat.app.appcompat活动;
导入androidx.appcompat.widget.SearchView;
导入androidx.appcompat.widget.Toolbar;
导入androidx.core.view.GravityCompat;
导入androidx.drawerlayout.widget.drawerlayout;
导入android.content.Intent;
导入android.icu.text.transiterator;
导入android.os.Bundle;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.SparseBooleanArray;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Filter;
导入android.widget.ImageButton;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.material.navigation.NavigationView;
导入java.lang.reflect.Array;
导入java.text.DateFormatSymbols;
导入java.util.ArrayList;
公共类StorageActivity扩展AppCompatActivity实现NavigationView.OnNavigationItemSelectedListener{
列表视图列表视图;
字符串[]香料={“Ajowan”、“Anis”、“Anatto”、“Bergkümmel”、“Betram”、“Brotklee”、“Eberraute”、“Essigbaum”、“Harissa”、“Herbs”、“Ingwer”、“Knoblauch”、“Koriander”、“Mandel”};
搜索视图搜索视图;
选定的ArrayList=新建ArrayList();
ArrayAdapter ArrayAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u存储);
listView=findViewById(R.id.lvs);
arrayAdapter=新的arrayAdapter(这是android.R.layout.simple\u list\u item\u multiple\u selection,spices);
setAdapter(arrayAdapter);
searchView=findviewbyd(R.id.search\u spices);
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
StorageActivity.this.arrayAdapter.getFilter().filter(查询);
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
StorageActivity.this.arrayAdapter.getFilter().filter(newText);
返回false;
}
});
activity_storage.xml
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
tools:context=".StorageActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/green"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/home_screen"
android:textAppearance="@style/ToolBarTheme"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/notiButton"
app:layout_constraintHorizontal_bias="0.473"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.454" />
<ImageButton
android:id="@+id/notiButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:background="@drawable/ic_notifications"
android:contentDescription="NULL"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<androidx.cardview.widget.CardView
android:id="@+id/notification_circle"
android:layout_width="10dp"
android:layout_height="10dp"
android:visibility="visible"
app:cardBackgroundColor="@color/red"
app:cardCornerRadius="50dp"
app:layout_constraintEnd_toEndOf="@+id/notiButton"
app:layout_constraintTop_toTopOf="@+id/notiButton">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/notification_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="@color/white"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.SearchView
android:id="@+id/search_spices"
app:queryHint="Search Spice"
app:iconifiedByDefault="false"
android:layout_margin="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ebecf0">
</androidx.appcompat.widget.SearchView>
<ListView
android:id="@+id/lvspices"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="multipleChoice"
android:background="@color/beige"
tools:listitem="@layout/support_simple_spinner_dropdown_item"/>
</LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout>
提前谢谢你的帮助