这是我看到的 a SHERLOCK FRAGMENT ACTIVITY,其中包含 4FRAGMENTS和 a SEARCH VIEW。有 4 个片段,其中最后一个是FRAGMENT SEARCH RESULTS
我的问题是如何将搜索查询的数据传递到FRAGMENT SEARCH RESULTS搜索视图并在其中显示搜索结果FRAGMENT SEARCH RESULTS
我实现了这个
private void setupSearchView(MenuItem searchItem) {
if (isAlwaysExpanded()) {
mSearchView.setIconifiedByDefault(false);
} else {
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}
mSearchView.setOnQueryTextListener(this);
}
public boolean onClose() {
return false;
}
protected boolean isAlwaysExpanded() {
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
if (query.length() > 0) {
**//WHAT SHOULD I WRITE HERE**
}
return false;
}
@Override …Run Code Online (Sandbox Code Playgroud) android android-fragments searchview android-fragmentactivity
我尝试通过我的代码显示键盘,因为 closeListener 和 onExpandListener 不起作用。我在哪里失败了?当用户按下工具栏的后退按钮时可以调用一个方法吗?
后工具栏按钮的图像 --> https://i.stack.imgur.com/hDZlu.jpg
这是我的java代码;具有搜索视图的类:
public class MainActivity extends ActionBarActivity {
SearchView searchView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//Title and subtitle
toolbar.setTitle("Magazzino Chimica");
setSupportActionBar(toolbar);
Intent intent = getIntent();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
// Associate searchable configuration with the SearchView
final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_search)
.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) { …Run Code Online (Sandbox Code Playgroud) 我一直在搜索如何通过 vaule 在 firebase 中搜索,但我无法得到完整的答案,所以我现在问......
我使用了这个方法,但无法得到正确的结果:
我需要按“用户名”搜索。
这是我的数据库:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
mQuery = mDatabase.orderByChild("Username");
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
而且我也用过:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
mQuery = mDatabase.orderByChild("Username").equalTo(newText)
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但我不能,所以有人可以给我完全正确的答案吗
感谢 AtaerCaner 帮助我,也感谢你尽可能地帮助我,但我仍然没有从搜索视图中得到任何结果,所以我将给出我的类中的方法:
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(final DataSnapshot dataSnapshot, String s) {
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public …Run Code Online (Sandbox Code Playgroud) 搜索是我的应用程序的核心,我需要它才能正常工作。现在我有一个SearchView。我需要内联显示结果,因此我使用此代码。
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
srl.setVisibility(View.GONE);
return false;
}
@Override
public boolean onQueryTextChange(String query) {
currentQuery = query;
if (query.length()>= 3) {
searchFor(currentQuery);
} else {
srl.setVisibility(View.GONE);
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
问题可能很明显。因为我使用 firebase,我的searchFor()函数相当重,我不需要对每个字母都执行它。这不仅会破坏用户体验,如果您写下较长的单词,有时还会使我的应用程序崩溃。
我想要的是当用户停止打字时进行搜索。我想我需要一个处理程序,将其延迟一秒,然后每次按下字母键时取消该处理程序并设置一个新的处理程序。这在理论上是有道理的。我只是无法自己为 searchView 实现这一点。
帮助将不胜感激!
我对这段代码有问题。添加 SearchView 的代码后,每次我点击一个元素进入 StoreActivity,当我回来时我收到错误
kotlin.UninitializedPropertyAccessException:lateinit 属性适配器尚未初始化
排上
适配器过滤器过滤器(新文本)
我该如何解决这个错误?我不明白...
class HomeFragment : BaseFragment() {
private lateinit var adapter: MyStoreRecyclerViewAdapter
private var stores: List<StoreRealm> = ArrayList()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_home, container, false)
}
override fun onResume() {
super.onResume()
setHasOptionsMenu(true)
if (isAdded) {
val systemService = this.context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
BLocationManager(this.context).getLocation {
loadHome()
if (!systemService.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
showEnableGpsDialog()
} else {
gpsWarning.visibility = View.GONE
}
}
}
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
inflater?.inflate(R.menu.search_store, …Run Code Online (Sandbox Code Playgroud) 我有一个RecyclerView。我想用 SearchView 让它可以过滤。我的应用程序基于Android Architecture Components.
我创建了一个过滤方法searchView。当我搜索某些内容时,它可以工作,但是当我清除其中的文本时searchView,列表不会更改,并且仍然显示搜索数据。
活动:
private StudentAdapter mAdapter;
mAdapter = new StudentAdapter(this);
recyclerView.setAdapter(mAdapter);
//ViewModel
StudentViewModelFactory factory = new StudentViewModelFactory(mDb, mClassId);
StudentViewModel viewModel = ViewModelProviders.of(this, factory).get(StudentViewModel.class);
viewModel.getStudentEntries().observe(this, studentEntries -> mAdapter.setStudents(studentEntries));
//SearchView
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextSubmit(String query){
return false;
}
@Override
public boolean onQueryTextChange(String newText){
mAdapter.getFilter().filter(newText);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
适配器:
public class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.itemHolder> {
private List<StudentEntry> mStudentEntries;
private List<StudentEntry> filteredStudentEntries;
public StudentAdapter(Context context) {
this.context = context; …Run Code Online (Sandbox Code Playgroud) android searchview android-recyclerview android-livedata android-viewmodel
我需要在我的 Android 应用程序中实现一个搜索界面,该界面可以RecyclerView过滤ViewPager.
我已经实现了EditText和SearchView小部件并尝试查看差异。
我感兴趣的听众是:
myEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
Run Code Online (Sandbox Code Playgroud)
和 :
mySearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
textView.setText(newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
textView.setText(query);
return true;
}
Run Code Online (Sandbox Code Playgroud)
SearchView我是否缺少一些允许和不允许的重要功能EditText?
有了这两个小部件,我可以使用单个“搜索视图”RecyclerView在内部进行搜索吗?ViewPager
我不想要一个ACTION_SEARCH或任何添加的搜索对话框视图。
提前致谢 …
android android-edittext android-viewpager searchview android-recyclerview
Android searchview 有默认的 queryhint textcolor 和 text color 。我们如何使用 AndroidX 更改 Android Searchview 中 edittext 的文本颜色
我很困惑我应该使用哪个版本SearchView。文档androidx.appcompat.widget.SearchView明确指出
如果您仅针对 API 级别 11 及更高版本开发应用程序,则应使用框架
android.widget.SearchView类。
然而,我无法完全想象这是真的或一个好主意,因为例如android.widget.SearchViewAPI 级别 11 可能与 API 级别 29 不同。那么,任何人都知道为什么官方文档建议使用android.widget.SearchView而不是androidx.appcompat.widget.SearchView?
希望你们一切都好。我正在开发一个Android应用程序,该应用程序使用searchview从Firebase关系数据库medications info db中搜索数据,在我打开包含SearchView的活动后,应用程序崩溃,经过调试后我得到了这个:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.projetfe, PID: 26491
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.projetfe/com.example.projetfe.MedicamentActivity}: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class androidx.appcompat.widget.SearchView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3114)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7050)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Caused by: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class androidx.appcompat.widget.SearchView
Caused by: android.view.InflateException: Binary XML file …Run Code Online (Sandbox Code Playgroud)