java - Arrayadapter 和 SearchView
问题描述
真可惜……我正在尝试实现一个 SearView 来过滤 ListView,不幸的是,即使遵循简单的教程(是的,使用 S),我也从未达到我的目标。每次,我都会得到一个带有奇怪字符串的列表,而不是我所期望的。
这一次,我一次又一次地检查这个,我的应用程序显示奇怪的列表视图:
因此,由于这不是第一次,我想我在某个地方犯了一个错误,我请求您的帮助以一劳永逸地理解解决方案。
耻辱。去stackoverflow理解一个教程......
顺便说一句,谢谢你的帮助。
MainActivity.class
package com.soundbox.djbam.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ArrayList<Spacecraft> spacecrafts = new ArrayList<>();
ArrayAdapter<Spacecraft> adapter;
ListView lv;
SearchView sv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//VIEW REFERENCES
lv = findViewById(R.id.lv);
sv = findViewById(R.id.sv);
//POPULATE DATA
fillData();
//ADAPTER
//final SoundAdapter adapter = new SoundAdapter(Sounds_Organisation.this, sounds);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, spacecrafts);
lv.setAdapter(adapter);
//EVENTS
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//FILTER
adapter.getFilter().filter(newText);
return false;
}
});
}
private void fillData() {
Spacecraft s = new Spacecraft("Voyager");
spacecrafts.add(s);
s = new Spacecraft("Rosetter");
spacecrafts.add(s);
s = new Spacecraft("Toucan");
spacecrafts.add(s);
s = new Spacecraft("Babouchka");
spacecrafts.add(s);
s = new Spacecraft("Biloute");
spacecrafts.add(s);
s = new Spacecraft("Test");
spacecrafts.add(s);
}
}
Spacecraft.class 包 com.soundbox.djbam.myapplication;
public class Spacecraft {
String name;
public Spacecraft(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
activity_main 布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<SearchView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</SearchView>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
解决方案
推荐阅读
- c++ - C++ 上 gRPC 中的跟踪支持
- flutter - Flutter:如何在 Flutter 项目中添加字体
- markers - 将一组标记放在传单的前面
- html - Cutycapt 和恒定图像大小输出
- google-chrome - 为什么 HTTP 在 UDP 中运行
- java - 如何在不使用两个 JSP 文件的情况下在 JSP 中上传文件?
- sql - 优化有条件的两个表的选择查询
- powershell - Powershell脚本获取完整路径并获取文件版本
- python - 在python中读取带有二进制内容的arff文件时出现ValueError
- android - 如何在 MainActivity 中使用 DaggerAppCompatActivity