1
因此,我有一段代碼從充滿用戶條目的數據庫中檢索數據。我還有一個帶有文本觀察器的EditText,允許他們通過輸入過濾條目。最後我有一個微調允許用戶排序返回的查詢。排序過濾的sqlite查詢
除了當用戶過濾條目然後嘗試對它們進行排序時,一切都可以正常工作。此時所有的條目都會被重新加載和排序。
所以很明顯,該過濾器沒有重新參與,但我不明白爲什麼或如何解決它。
private void displayListView(String sortdata) {
// TODO Auto-generated method stub
// Building the list
info.open();
Cursor cursor = info.getListData(sortdata);
info.close();
String[] listViewColumns = new String[] { Database.KEY_BREWNAME, Database.KEY_BREWERY, Database.KEY_RATING,
Database.KEY_DATEIMAGENAME, };
int[] dataToListView = new int[] { R.id.tvBrewName, R.id.tvBrewery, R.id.tvRating, R.id.ivThumb, };
dataAdapter = new SimpleCursorAdapter(this, R.layout.entrymain, cursor, listViewColumns, dataToListView, 0);
ViewBinder viewBinder = new ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if (!(view instanceof ImageView) || view.getId() != R.id.ivThumb) {
return false;
}
ImageView image = (ImageView)view;
if (new File(Environment.getDataDirectory() + "/data/com.ex.beerlog/files/" + cursor.getString(columnIndex))
.exists()) {
try {
FileInputStream fis = openFileInput(cursor.getString(columnIndex));
Bitmap bmp1 = BitmapFactory.decodeStream(fis);
bmp1 = cropToCicle(bmp1);
image.setImageBitmap(bmp1);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
image.setImageResource(R.drawable.bl);
Log.w("Start", "=-=-=-=-" + cursor.getString(columnIndex) + " === Doesn't exist");
}
return true;
}
};
dataAdapter.setViewBinder(viewBinder);
listview.setAdapter(dataAdapter);
// What happens when a list item is clicked
OnItemClickListener onListItemClick = new OnItemClickListener() {
public void onItemClick(AdapterView<?> listView, View view, int position, long id) {
Cursor clickCursor = (Cursor)listView.getItemAtPosition(position);
String clickData = clickCursor.getString(clickCursor.getColumnIndexOrThrow("_id"));
Bundle backpack = (Bundle)new Bundle();
backpack.putString("clickdata", clickData);
Intent a = new Intent(Start.this, AddEdit.class);
a.putExtras(backpack);
startActivity(a);
}
};
listview.setOnItemClickListener(onListItemClick);
// /Modifying the list entries while the user types, setup a filter
TextWatcher watchSearch = new TextWatcher() {
@Override
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) {
dataAdapter.getFilter().filter(s.toString());
}
};
sqlSearchText.addTextChangedListener(watchSearch);
FilterQueryProvider filterQuery = new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
info.open();
return info.fetchEntriesByName(constraint.toString(), sortSpinValues);
}
};
info.close();
dataAdapter.setFilterQueryProvider(filterQuery);
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int pos, long arg3) {
// TODO Auto-generated method stub
sortSpinValues = sortSpinValue[pos];
displayListView(sortSpinValues);
}
我想這可能是一些非常簡單的東西,我似乎無法弄清楚。
感謝