【问题标题】:How can I filter database content to fill a ListView?如何过滤数据库内容以填充 ListView?
【发布时间】:2012-01-19 11:15:00
【问题描述】:

如您所见,这是我的列表类。我希望能够使用 editText 过滤此列表。关于所需查询的布局,甚至是代码 sn-p,谁能指出我正确的方向?

public class CBFilter extends ListActivity {

EditText Filter;
ListView RecipeNames;
Cursor cursor;
CBListAdapter adapter;
CBDataBaseHelper data;
SQLiteDatabase data2;
TextView RecipeText, RowId;
String[] from = { CBDataBaseHelper.KEY_NAME};
int[] to = { R.id.rowText};
ImageView image;
byte[] dataImage;
BufferedInputStream buf;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
boolean diditwork;
try{

//FileInputStream in;//= openFileInput("//STEFAN-PC/Users/stefan/Desktop/Uni Work/Image.jpg");
RecipeNames = (ListView) findViewById(android.R.id.list);
RecipeNames.setTextFilterEnabled(true);
RecipeText = (TextView) findViewById(R.id.recipeText);
Filter = (EditText) findViewById(R.id.search_box);

//adapter = new SimpleCursorAdapter (this, 0, cursor, null, null);
image = (ImageView) findViewById(R.id.RecipeImage);
data = new CBDataBaseHelper(this);
data.open();
cursor = data.query();
startManagingCursor(cursor);
adapter = new CBListAdapter(this, 0, cursor, from, to);
RecipeNames.setAdapter(adapter);
adapter.notifyDataSetChanged();

Filter.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    public void afterTextChanged(Editable s) {

        RecipeNames = (ListView) findViewById(android.R.id.list);
        CBListAdapter filteradapter = (CBListAdapter)RecipeNames.getAdapter();
        filteradapter.getFilter().filter(s.toString());


    }




});

 /*adapter.setFilterQueryProvider(new FilterQueryProvider() {
        public Cursor runQuery(CharSequence constraint) {
            return getDirectoryList(constraint);
        }
    });*/


/*adapter.setFilterQueryProvider(new FilterQueryProvider() {
    public Cursor runQuery(CharSequence constraint) {
        return getDirectoryList(constraint);
    }
});*/


}catch(Exception e){
diditwork = false;
String error = e.toString();
Dialog d = new Dialog(this);
d.setTitle("darn");
TextView tv = new TextView(this);
tv.setText(error);
d.setContentView(tv);
d.show();
}}


/*public Cursor getDirectoryList (CharSequence constraint)  {
    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(
        CBDataBaseHelper.DATABASE_TABLE
    );

    String asColumnsToReturn[] = { 
            CBDataBaseHelper.DATABASE_TABLE + "."
            + CBDataBaseHelper.KEY_NAME 
    };

    if (constraint == null  ||  constraint.length () == 0)  {
        //  Return the full list
        return queryBuilder.filter(, asColumnsToReturn, null, null,
                null, null, null);  }  
    else  {
        String value = "%"+constraint.toString()+"%";

        return data.query(CBDataBaseHelper.DATABASE_TABLE, asColumnsToReturn, "LAST_NAME like ? ", new String[]{value}, null, null, null);
    }
}*/

public void CreateNew(View view){

    Intent myIntent = new Intent(this, CBCreate.class);
    startActivity(myIntent);
}

@Override
public void onListItemClick(ListView parent, View v, int position, long id) {
    super.onListItemClick(parent, v, position, id);
    Intent intent1 = new Intent(this, CBCreate.class);
    long rowId = cursor.getLong(cursor.getColumnIndex(CBDataBaseHelper.KEY_ROWID));
    String s = String.valueOf(rowId);
    intent1.putExtra("SELECTED", s);
    startActivity(intent1);
}


}

【问题讨论】:

    标签: android listview filter


    【解决方案1】:

    我不擅长 SQLite,但我认为如果你只是放置过滤器 在查询中它应该只吐出你想要的东西。

    public Cursor findRecipe(String filter) {
        return db.query("myrecipetable", null, 
            "rec_recipecolumn LIKE" + filter, null, null, null, null);
    }
    

    然后为您需要覆盖的所有表格进行调整。

    【讨论】:

    • 什么意思?我从哪里得到它[光标]?你把方法放在哪里?
    • 是的,方法存储在哪里?在适配器类中?数据库助手类还是这个?
    • 它可以方便地访问数据库。我会把它放在 DatabaseHelper 类中。
    猜你喜欢
    • 2012-11-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多