我想使用edittext从数据库中搜索名称 公共类SearchActivity扩展活动{ 私人编辑文本搜索按名称搜索; 私有数组列表数组; 专用阵列适配器; 私有列表视图列表视图; sqlitedb数据库; 光标; 私人DBHelper DBHelper; 个人贷款p=新的个人贷款(); @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u search); 按名称搜索(EditText)findViewById(R.id.SearchName); 数组=新的ArrayList(); listView=(listView)findViewById(R.id.listView1); adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,数组); setAdapter(适配器); getData(); } 私有void getData(){ DBHelper=newdbhelper(this); db=helper.getReadableDatabase(); 字符串列[]=新字符串[]{ID、名称、开始日期、结束日期、贷款金额、利率、最终金额}; cursor=db.query(false,LOAN_表,列,null,null,null,null,null,null); 如果(!cursor.isAfterLast()){ cursor.moveToFirst(); 而(!cursor.isAfterLast()){ p=新的个人贷款(); p、 id=cursor.getInt(0); p、 name=cursor.getString(1); p、 sd=cursor.getString(2); p、 ed=cursor.getString(3); p、 la=游标。getDouble(4); p、 roi=cursor.getFloat(5); p、 amt=cursor.getString(6); 数组。添加(p); cursor.moveToNext(); 按名称搜索。addTextChangedListener(新的TextWatcher(){ public void onTextChanged(字符序列、int start、int before、int count){ //TODO自动生成的方法存根 } 更改前的公共无效(字符序列、整数开始、整数计数、, 整数后){ //TODO自动生成的方法存根 } 公共无效后文本已更改(可编辑){ //TODO自动生成的方法存根 s=按名称搜索。getText(); p、 name=s.toString(); adapter.getFilter().filter(s.toString()); } }); } cursor.close(); db.close(); adapter.notifyDataSetChanged(); } } @凌驾 public void onBackPressed(){ //TODO自动生成的方法存根 意图i=新意图(SearchActivity.this,FirstActivity.class); 星触觉(i); } }

我想使用edittext从数据库中搜索名称 公共类SearchActivity扩展活动{ 私人编辑文本搜索按名称搜索; 私有数组列表数组; 专用阵列适配器; 私有列表视图列表视图; sqlitedb数据库; 光标; 私人DBHelper DBHelper; 个人贷款p=新的个人贷款(); @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u search); 按名称搜索(EditText)findViewById(R.id.SearchName); 数组=新的ArrayList(); listView=(listView)findViewById(R.id.listView1); adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,数组); setAdapter(适配器); getData(); } 私有void getData(){ DBHelper=newdbhelper(this); db=helper.getReadableDatabase(); 字符串列[]=新字符串[]{ID、名称、开始日期、结束日期、贷款金额、利率、最终金额}; cursor=db.query(false,LOAN_表,列,null,null,null,null,null,null); 如果(!cursor.isAfterLast()){ cursor.moveToFirst(); 而(!cursor.isAfterLast()){ p=新的个人贷款(); p、 id=cursor.getInt(0); p、 name=cursor.getString(1); p、 sd=cursor.getString(2); p、 ed=cursor.getString(3); p、 la=游标。getDouble(4); p、 roi=cursor.getFloat(5); p、 amt=cursor.getString(6); 数组。添加(p); cursor.moveToNext(); 按名称搜索。addTextChangedListener(新的TextWatcher(){ public void onTextChanged(字符序列、int start、int before、int count){ //TODO自动生成的方法存根 } 更改前的公共无效(字符序列、整数开始、整数计数、, 整数后){ //TODO自动生成的方法存根 } 公共无效后文本已更改(可编辑){ //TODO自动生成的方法存根 s=按名称搜索。getText(); p、 name=s.toString(); adapter.getFilter().filter(s.toString()); } }); } cursor.close(); db.close(); adapter.notifyDataSetChanged(); } } @凌驾 public void onBackPressed(){ //TODO自动生成的方法存根 意图i=新意图(SearchActivity.this,FirstActivity.class); 星触觉(i); } },android,android-edittext,Android,Android Edittext,这是我的更新代码,它过滤了数据,但使用的是最后一个字段,而不是名称字段。。。它使用了最后一个字段进行过滤,如果有人知道答案,请共享试试这个 public class SearchActivity extends Activity { private EditText Search_By_Name; private ArrayList<Personal_loan> array; private ArrayAdapter<Personal_loan>

这是我的更新代码,它过滤了数据,但使用的是最后一个字段,而不是名称字段。。。它使用了最后一个字段进行过滤,如果有人知道答案,请共享

试试这个

public class SearchActivity extends Activity {

    private EditText Search_By_Name;
    private ArrayList<Personal_loan> array;
    private ArrayAdapter<Personal_loan> adapter;
    private ListView listView;
    SQLiteDatabase db;
    Cursor cursor ;
    private DBHelper dbHelper;
    Personal_loan p = new Personal_loan();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        Search_By_Name = (EditText)findViewById(R.id.SearchName);
        array = new ArrayList<Personal_loan>();
        listView = (ListView) findViewById(R.id.listView1);
        adapter = new ArrayAdapter<Personal_loan>(this, android.R.layout.simple_list_item_1, array);
        listView.setAdapter(adapter);
        getData();
    }
    private void getData() {
        DBHelper helper = new DBHelper(this);
        db = helper.getReadableDatabase();
        String columns[] = new String[] {ID,Name,START_DATE,END_DATE,LOAN_AMOUNT,RATE_OF_INTEREST,FINAL_AMOUNT};
        cursor = db.query( false, LOAN_TABLE, columns, null, null, null, null, null, null, null);
        if (!cursor.isAfterLast()) {
            cursor.moveToFirst();
            while (!cursor.isAfterLast()) {
                p = new Personal_loan();
                p.id = cursor.getInt(0);
                p.name = cursor.getString(1);
                p.sd = cursor.getString(2);
                p.ed = cursor.getString(3);
                p.la = cursor.getDouble(4);
                p.roi = cursor.getFloat(5);
                p.amt=cursor.getString(6);
                array.add(p);
                cursor.moveToNext();
                Search_By_Name.addTextChangedListener(new TextWatcher() {
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        // TODO Auto-generated method stub

                    } 
                    public void beforeTextChanged(CharSequence s, int start, int count,
                            int after) {
                        // TODO Auto-generated method stub
                    }
                    public void afterTextChanged(Editable s) {
                        // TODO Auto-generated method stub
                        s=Search_By_Name.getText();
                        p.name=s.toString();
                        adapter.getFilter().filter(s.toString());
                    }
                });
            }
            cursor.close();
            db.close();
            adapter.notifyDataSetChanged();
        }       
    }
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        Intent i=new Intent(SearchActivity.this,FirstActivity.class);
        startActivity(i);
    }
}

Reference

能否显示您的logcat?应用程序需要一个事件来获取用户输入的EditText值。因此,当从按钮单击上的EditText检索值时?您在哪里读取EditText值?您如何解释它?Priyanka,只有在活动创建中,当EditText为空时,才调用
getData()
。您应该实现EditText的按钮或
onTextChanged()
方法,以便在
getData()
方法中搜索其内容(如果该方法不为空)。顺便说一下,您应该将搜索到的字符串作为参数传递,并使用WHERE条件在db中搜索该字符串。并且不依赖于绝对列位置。
  Search_By_Name .addTextChangedListener(new TextWatcher() {

          @Override public void afterTextChanged(Editable arg0) { 
          // TODO  Auto-generated method stub 
         String text =  search.getText().toString().toLowerCase(Locale.getDefault()); //
          Your_Activity.this.adapter.filter(text); }

          @Override
         public void beforeTextChanged(CharSequence arg0, int
          arg1, int arg2, int arg3) { 
           // TODO Auto-generated method stub
                }

          @Override
          public void onTextChanged(CharSequence arg0, int arg1,
          int arg2, int arg3) { 
           // TODO Auto-generated method stub 
           } });