1
因此,我試圖在我的應用程序上實現此代碼(https://stackoverflow.com/a/14085524/2213992),但迄今爲止沒有成功。如何使用SherlockActionbar實現帶有列表視圖的搜索小部件?
這是我MainActivity.java:
import java.util.List;
import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.SearchView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockListActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
public class MainActivity extends SherlockListActivity implements
// public class MainActivity extends ListActivity implements
ActionBar.TabListener {
private List<Scos> scoss;
ScosDataSource datasource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datasource = new ScosDataSource(this);
datasource.open();
scoss = datasource.findAll();
if (scoss.size() == 0) {
createData();
scoss = datasource.findAll();
}
refreshDisplay();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getSupportMenuInflater().inflate(R.menu.options, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search)
.getActionView();
if (null != searchView) {
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
}
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
public boolean onQueryTextChange(String newText) {
// this is your adapter that will be filtered
adapter.getFilter().filter(newText);
return true;
}
public boolean onQueryTextSubmit(String query) {
// this is your adapter that will be filtered
adapter.getFilter().filter(query);
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
return super.onCreateOptionsMenu(menu);
// return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
return (true);
}
return (super.onOptionsItemSelected(item));
}
public void refreshDisplay() {
ArrayAdapter<Scos> adapter = new ScosListAdapter(this, scoss);
setListAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
datasource.open();
}
@Override
protected void onPause() {
super.onPause();
datasource.close();
}
private void createData() {
}
}
這是我option.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_search"
android:actionViewClass="com.actionbarsherlock.widget.SearchView"
android:showAsAction="ifRoom|collapseActionView"
android:icon="@drawable/ic_action_search"
android:title="@Search">
</item>
</menu>
感謝您的幫助提前。
哈維爾
目前發生了什麼不工作? – Kirk 2013-03-28 01:08:20
我真的不知道如何連接searhview過濾器代碼:adapter.getFilter()。filter(newText);到我的列表視圖適配器:ArrayAdapter adapter = new ScosListAdapter(this,scoss); –
2013-03-28 17:20:43
由於我發佈的解決方案應該解決您的問題,將searchview與適配器連接起來。 – 2013-06-04 16:02:34