如何创建自己的搜索从自己的数据库加载视图



我在创建自己的搜索视图,从数据库中加载它并将数据显示到列表中时遇到了困难。

现在我的应用程序正在工作,当我点击搜索按钮时会出现一个搜索列表,但我无法进行任何搜索。当我开始将我的搜索写入searhView时,应用程序没有找到和过滤我的列表,当我订阅搜索时,我的应用程序返回到显示我的搜索列表的主活动。

主活动

public class MainActivity extends AppCompatActivity {
    /** Database helper that will provide us access to the database */
    private MarluvasDbHelper myDbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDbHelper = new MarluvasDbHelper(this);
        try {
            myDbHelper.createDataBase();
        } catch (IOException ice) {
            throw new Error("Unable to connect");
        }
        myDbHelper.openDataBase();
        // Create and/or open a database to read from it
        //SQLiteDatabase db = myDbHelper.getReadableDatabase();
        //Toast.makeText(MainActivity.this, "Sucess", Toast.LENGTH_SHORT).show();
        //Toast.makeText(MainActivity.this, MarluvasContract.MarluvasEntry.COLUMN_COD, Toast.LENGTH_SHORT).show();
        //displayDatabaseInfo();
    }
    private void displayDatabaseInfo(){
        // Create and/or open a database to read from it
        SQLiteDatabase db = myDbHelper.getReadableDatabase();
        // Define a projection that specifies which columns from the database
        // you will actually use after this query.
        String[] projection = {
                MarluvasContract.MarluvasEntry._ID,
                MarluvasContract.MarluvasEntry.COLUMN_MODELO,
                MarluvasContract.MarluvasEntry.COLUMN_COR};
        // Perform a query on the pets table
        Cursor cursor = db.query(
                MarluvasContract.MarluvasEntry.TABLE_NAME,   // The table to query
                projection,            // The columns to return
                null,                  // The columns for the WHERE clause
                null,                  // The values for the WHERE clause
                null,                  // Don't group the rows
                null,                  // Don't filter by row groups
                null);                   // The sort order
        ListView listView = (ListView) findViewById(R.id.list);
        CustomAdapter adapter = new CustomAdapter(this, cursor, 0);
        listView.setAdapter(adapter);
    }
    public Cursor getStudentListByKeyword(String search) {
        //Open connection to read only
        SQLiteDatabase db = myDbHelper.getReadableDatabase();
        // Define a projection that specifies which columns from the database
        // you will actually use after this query.
        String[] projection = {
                MarluvasContract.MarluvasEntry._ID,
                MarluvasContract.MarluvasEntry.COLUMN_MODELO,
                MarluvasContract.MarluvasEntry.COLUMN_COR};
        //String whereClause = MarluvasContract.MarluvasEntry.COLUMN_MODELO+ "=?";
        //String [] whereArgs = {"  LIKE  '%" +search + "%' "};
        // Perform a query on the pets table
        Cursor cursor = db.query(
                MarluvasContract.MarluvasEntry.TABLE_NAME,   // The table to query
                projection,            // The columns to return
                null,                  // The columns for the WHERE clause
                null,                  // The values for the WHERE clause
                null,                  // Don't group the rows
                null,                  // Don't filter by row groups
                null);                   // The sort order

        ListView petListView = (ListView) findViewById(R.id.list);
        CustomAdapter adapter = new CustomAdapter(this, cursor, 0);
        petListView.setAdapter(adapter);
        return cursor;
    }

    @Override
    public void onResume(){
        super.onResume();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the options menu from XML
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);
        // Get the SearchView and set the searchable configuration
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(search).getActionView();
        // Assumes current activity is the searchable activity
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
               getStudentListByKeyword(s);
                return false;
            }
            @Override
            public boolean onQueryTextChange(String s) {
                getStudentListByKeyword(s);
                return false;
            }
        });
        return true;
    }
}

自定义适配器

public class CustomAdapter extends CursorAdapter {
    private LayoutInflater mInflater;
    public CustomAdapter(Context context, Cursor c, int flags) {
        super(context, c, flags);
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return LayoutInflater.from(context).inflate(R.layout.item, parent, false);
    }
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        // Find fields to populate in inflated template
        TextView modelo = (TextView) view.findViewById(R.id.modelo);
        TextView cor = (TextView) view.findViewById(R.id.cor);
        // Extract properties from cursor
        String stringModelo = cursor.getString(cursor.getColumnIndexOrThrow(MarluvasContract.MarluvasEntry.COLUMN_MODELO));
        String stringDescr = cursor.getString(cursor.getColumnIndex(MarluvasContract.MarluvasEntry.COLUMN_COR));
        // Populate fields with extracted properties
        modelo.setText(stringModelo);
        cor.setText(stringDescr);

    }
}

我该如何解决它?如何实现 setOnQueryTextListener 方法?

非常感谢!

结帐 从资产文件夹读取 sqlite 文件

相关内容

  • 没有找到相关文章

最新更新