如何解决在列表视图
我是编程新手,几天来一直在寻找解决我的问题的方法。(在 Android Studio 上)
我用搜索视图创建了一个列表视图,然后我添加了复选框。 复选框的问题在于,当您搜索某些内容时,它们不会保持其位置。 例如: 如果我有 5 个字。
项目 1 奶酪
项目 2 香肠
项目 3 面包
项目 4 番茄酱
项目 5 柠檬
然后我检查第一个单词(Item 1 cheese)并搜索 Lemon(Item 5),Lemon 被选中,因为它在第一个位置(在 item 1 上)。
图片示例:
- 检查第一个位置:
- 检查一个词并搜索它
如何设置不是检查职位而是检查名称? 我在想如果你可以用一个数组来做到这一点,当你检查某些东西时它会进入数组并保持在那里被选中,当你取消选中它时它会回到另一个数组。不幸的是,我不知道如何做到这一点。 (我已经试过了)
也许你也可以为职位分配 ID,但我不知道是否还有其他解决方案,而不是给每个职位一个 ID,因为以后应该超过 200 个职位。
对于我在 Listview 中使用的复选框(android:choiceMode="multipleChoice") 一些导入用于代码中的其他功能。 (工具栏、抽屉等)
这是我的代码:
StorageActivity.java
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;
}
});
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>
预先感谢您的帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。