Java 带有SQLite数据库的自定义listview中的Textwatcher

Java 带有SQLite数据库的自定义listview中的Textwatcher,java,android,sqlite,listview,textwatcher,Java,Android,Sqlite,Listview,Textwatcher,我想在自定义listview中添加一个过滤器,它从sqlite数据库中获取值。是否可以根据textview的两个值进行过滤?请帮助我添加筛选查询。如果你有任何文本观察者的例子,那么请告诉我 我在MainActivity.java中添加了一个listview适配器 lv = (ListView) findViewById(R.id.listView1); mydb = new DBHelper(this); Log.d("tag", mydb.listfromdb().toS

我想在自定义listview中添加一个过滤器,它从sqlite数据库中获取值。是否可以根据textview的两个值进行过滤?请帮助我添加筛选查询。如果你有任何文本观察者的例子,那么请告诉我

我在MainActivity.java中添加了一个listview适配器

   lv = (ListView) findViewById(R.id.listView1);
    mydb = new DBHelper(this);
    Log.d("tag", mydb.listfromdb().toString());
    lv.setAdapter(new ViewAdapter(mydb.listfromdb()));

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.list_item, null);
        }
        Listcollection o = collectionlist.get(position);

        if (o != null) {
            TextView idText = (TextView) convertView
                    .findViewById(R.id.lvid);
            TextView nameText = (TextView) convertView
                    .findViewById(R.id.lvname);

            TextView dateText = (TextView) convertView
                    .findViewById(R.id.lvdate);
            TextView phoneText = (TextView) convertView
                    .findViewById(R.id.lvjno);

            if (idText != null) {
                idText.setText(Integer.toString(o.getId()));
            }
            if (nameText != null) {
                nameText.setText("Name : "
                        + collectionlist.get(position).getName());
            }
            if (dateText != null) {
                dateText.setText("Date of Complain : "
                        + collectionlist.get(position).getCdate());
            }
            if (phoneText != null) {
                phoneText.setText("Job No.: "
                        + collectionlist.get(position).getType());
            }
        }

        return convertView;
    }
这里我从DBHelper.java获取值

public ArrayList<Listcollection> listfromdb() {
    SQLiteDatabase db = this.getReadableDatabase();
    ArrayList<Listcollection> results = new ArrayList<Listcollection>();

    Cursor crs = db.rawQuery("select * from contacts", null);
    while (crs.moveToNext()) {
        Listcollection item = new Listcollection();
        item.setId(crs.getInt(crs.getColumnIndex(CONTACTS_COLUMN_ID)));
        item.setName(crs.getString(crs.getColumnIndex(C_NAME)));
        item.setCdate(crs.getString(crs.getColumnIndex(C_CDATE)));
       item.setType(crs.getString(crs.getColumnIndex(C_TYPE)));
        results.add(item);
    }

    db.close();
    return results;
}
public ArrayList listfromdb(){
SQLiteDatabase db=this.getReadableDatabase();
ArrayList结果=新建ArrayList();
游标crs=db.rawQuery(“从联系人中选择*”,null);
while(crs.moveToNext()){
Listcollection项=新建Listcollection();
item.setId(crs.getInt(crs.getColumnIndex(CONTACTS_COLUMN_ID));
item.setName(crs.getString(crs.getColumnIndex(C_NAME)));
item.setCdate(crs.getString(crs.getColumnIndex(C_CDATE));
item.setType(crs.getString(crs.getColumnIndex(C_TYPE)));
结果:增加(项目);
}
db.close();
返回结果;
}
在删除了一些方法之后,我还包括了DBHelper.java

public class DBHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "MyDBName.db";
public static final String CONTACTS_TABLE_NAME = "contacts";
public static final String CONTACTS_COLUMN_ID = "id";
public static final String C_NAME = "name";
public static final String C_TYPE = "type";
public static final String C_ADDRESS = "address";
public static final String C_DATE = "sdate";
public static final String C_PHONE = "phone";
public static final String C_PNAME = "pname";
public static final String C_MNO = "mno";
public static final String C_CDATE = "cdate";
public static final String C_DNAME = "dname";
public static final String C_DPHONE = "dphone";
public static final String C_TSCHARGE = "tscharge";
public static final String C_DAMOUNT = "damount";
public static final String C_FANDSOL = "fandsol";
public static final String C_TRNO = "trno";
public static final String C_TCRAMOUNT = "tcramount";


private HashMap hp;

public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

public ArrayList<Listcollection> listfromdb() {
    SQLiteDatabase db = this.getReadableDatabase();
    ArrayList<Listcollection> results = new ArrayList<Listcollection>();

    Cursor crs = db.rawQuery("select * from contacts", null);
    while (crs.moveToNext()) {
        Listcollection item = new Listcollection();
        item.setId(crs.getInt(crs.getColumnIndex(CONTACTS_COLUMN_ID)));
        item.setName(crs.getString(crs.getColumnIndex(C_NAME)));
        item.setCdate(crs.getString(crs.getColumnIndex(C_CDATE)));
       item.setType(crs.getString(crs.getColumnIndex(C_TYPE)));
        results.add(item);
    }

    db.close();
    return results;
}

 }
public类DBHelper扩展了SQLiteOpenHelper{
公共静态最终字符串数据库\u NAME=“MyDBName.db”;
公共静态最终字符串CONTACTS\u TABLE\u NAME=“CONTACTS”;
公共静态最终字符串联系人\u COLUMN\u ID=“ID”;
公共静态最终字符串C_NAME=“NAME”;
公共静态最终字符串C_TYPE=“TYPE”;
公共静态最终字符串C_ADDRESS=“ADDRESS”;
公共静态最终字符串C_DATE=“sdate”;
公共静态最终字符串C_PHONE=“PHONE”;
公共静态最终字符串C_PNAME=“PNAME”;
公共静态最终字符串C_MNO=“MNO”;
公共静态最终字符串C_CDATE=“CDATE”;
公共静态最终字符串C_DNAME=“DNAME”;
公共静态最终字符串C_DPHONE=“DPHONE”;
公共静态最终字符串C_TSCHARGE=“TSCHARGE”;
公共静态最终字符串C_DAMOUNT=“DAMOUNT”;
公共静态最终字符串C_FANDSOL=“FANDSOL”;
公共静态最终字符串C_TRNO=“TRNO”;
公共静态最终字符串C_TCRAMOUNT=“TCRAMOUNT”;
私有HashMap-hp;
公共DBHelper(上下文){
super(上下文,数据库名称,null,1);
}
公共ArrayList listfromdb(){
SQLiteDatabase db=this.getReadableDatabase();
ArrayList结果=新建ArrayList();
游标crs=db.rawQuery(“从联系人中选择*”,null);
while(crs.moveToNext()){
Listcollection项=新建Listcollection();
item.setId(crs.getInt(crs.getColumnIndex(CONTACTS_COLUMN_ID));
item.setName(crs.getString(crs.getColumnIndex(C_NAME)));
item.setCdate(crs.getString(crs.getColumnIndex(C_CDATE));
item.setType(crs.getString(crs.getColumnIndex(C_TYPE)));
结果:增加(项目);
}
db.close();
返回结果;
}
}

您的意思是要在listview中筛选项目。如果是这样,您可以使用If语句来获取和显示正确的值

String string = x;   // where x is the string that you want to display
if(input == string)    {
    // set the field in listview to the input.
}

那是什么?这是简单的逻辑。请不要那样做。这对我来说是个严重的问题。如果你有任何例子,请告诉我。很抱歉,我可能误解了你的问题。您的意思是要在listview中筛选要显示的结果吗?是的,但这些值来自SQLite数据库,所以实际上筛选应该是针对数据库的。但我不知道,我对SQL过滤不太熟悉。如果可以在listview上筛选结果,您可以尝试为listview适配器筛选接口。