2017-02-14 3 views
0

Ich habe Schwierigkeiten, ein eigenes searchView zu erstellen, es von einer Datenbank zu laden und die Daten in Liste anzuzeigen.Wie erstelle ich eine eigene searchView load aus eigener Datenbank?

Jetzt funktioniert meine App, wenn ich den Suchknopf drücke, erscheint eine Suchliste, aber ich kann keine Suche machen. Wenn ich meine Suche in ein searhView schreibe, findet die App meine Liste nicht und filtert sie nicht. Auch wenn ich die Suche absende, kehrt meine App zur mainActivity zurück, die meine Suchliste anzeigt.

MainActivity

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; 

    } 
} 

CustomAdapter

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); 


    } 
} 

Wie kann ich es beheben? Wie implementiert man die Methode setOnQueryTextListener?

Vielen Dank!

+0

'Was soll ich tun?' ... sollten Sie uns eine minimale Darstellung des Problems zeigen. Sie haben viel zu viel Code eingefügt. –

+0

Das Problem tritt in diesem Zeilencode auf –

+0

cursor = queryPlace.getStudentList(); –

Antwort

0
+0

Ich habe versucht und ich habe Fehler in diesem Zeilencode: Cursor cursor = db.rawQuery (selectQuery, null); in eine getStudentList –

+0

Ich werde Tabelle erstellen Code hinzufügen ... Ich habe Vertrag und einen Code verwendet, um meine Datenbank aus Asset-Ordner –

+0

Ich habe einen Vertrag und Datenbank-Code –

Verwandte Themen