gpt4 book ai didi

Android - 带有简单字符串数组的 ActionBar SearchView 建议

转载 作者:IT王子 更新时间:2023-10-28 23:34:06 26 4
gpt4 key购买 nike

我想实现一个具有建议功能的 ActionBar Search Widget。
我已经在我的 ORMLite 数据库中存储了一个字符串数组,我想将其用于建议。
如何在不创建大量类(Provider、Searchable...!)的情况下做到这一点?

最佳答案

这是一个示例,希望对您有所帮助。

在此游标中实现更多功能,例如。按建议项目时打开 Activity ,看看这个http://developer.android.com/guide/topics/search/adding-custom-suggestions.html

 package com.roberto.android.thetracker.app;

import android.database.MatrixCursor;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.support.v4.app.Fragment;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.MenuInflater;

public class CustomSearchFragment extends Fragment {

private static final String[] SUGGESTIONS = {
"Bauru", "Sao Paulo", "Rio de Janeiro",
"Bahia", "Mato Grosso", "Minas Gerais",
"Tocantins", "Rio Grande do Sul"
};
private SimpleCursorAdapter mAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

final String[] from = new String[] {"cityName"};
final int[] to = new int[] {android.R.id.text1};
mAdapter = new SimpleCursorAdapter(getActivity(),
android.R.layout.simple_list_item_1,
null,
from,
to,
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
final SearchView searchView = (SearchView) MenuItemCompat
.getActionView(menu.findItem(R.id.action_search));
searchView.setSuggestionsAdapter(mAdapter);
searchView.setIconifiedByDefault(false);

// Getting selected (clicked) item suggestion
searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
@Override
public boolean onSuggestionClick(int position) {
Cursor cursor = (Cursor) mAdapter.getItem(position);
String txt = cursor.getString(cursor.getColumnIndex("cityName"));
searchView.setQuery(txt, true);
return true;
}

@Override
public boolean onSuggestionSelect(int position) {
// Your code here
return true;
}
});

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}

@Override
public boolean onQueryTextChange(String s) {
populateAdapter(s);
return false;
}
});
}

// You must implements your logic to get data using OrmLite
private void populateAdapter(String query) {
final MatrixCursor c = new MatrixCursor(new String[]{ BaseColumns._ID, "cityName" });
for (int i=0; i<SUGGESTIONS.length; i++) {
if (SUGGESTIONS[i].toLowerCase().startsWith(query.toLowerCase()))
c.addRow(new Object[] {i, SUGGESTIONS[i]});
}
mAdapter.changeCursor(c);
}

}

关于Android - 带有简单字符串数组的 ActionBar SearchView 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23658567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com