2015-02-23 77 views
0

主要问题:Android的SQLite的使用两个微调检视筛选器

知道是否有与两个微调任何冲突,当我试图显示与我LoadGrid结果。就好像一个人压倒另一个人,并因此而结果空洞的结果。如果是的话,我怎么去结合纺纱厂的两个结果来获得所需的视图。

一些细节:

我想用我的GridView的两个微调来充当过滤器。一个用于TERMS,一个用于状态。具体而言,我想要发生的是用户可以使用INDIVIDUALLY或TOGETHER这两个纺纱器来过滤数据库中的帐户视图。

一步一个脚印,我已经得到一个微调运行和正常工作。所以我克隆了那个工作微调代码来让我的第二个代码运行起来。不,不工作。现在使用两个纺纱器中的任何一个都没有结果。没有帐户出现了。它会让我从旋转器中选择,但我的网格仍然是空的。

如果缺少任何东西或者您需要查看更多代码,请随时询问。干杯。

这里的微调片段:

 Utilities.ManageTermSpinner(this.getParent(), spinTerm); 
    try { 

     spinTerm.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
             int arg2, long arg3) { 
       LoadGrid(); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 

      } 
     }); 

    } catch (Exception ex) { 
     txtTest.setText(ex.toString()); 
    } 


    Utilities.ManageStatSpinner(this.getParent(), spinStat); 
    try { 

     spinStat.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
             int arg2, long arg3) { 
       LoadGrid(); 


      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 

      } 
     }); 

    } catch (Exception ex) { 
     txtTest2.setText(ex.toString()); 
    } 

} 

这里的LoadGrid它引用:

public void LoadGrid() { 
    dbHelper = new DatabaseHelper(this); 
    try { 

     View v = spinTerm.getSelectedView(); 
     TextView txt = (TextView) v.findViewById(R.id.txtTermClass); 
     String Terms = String.valueOf(txt.getText()); 
     Cursor c = dbHelper.getAccByTerms(Terms); 
     startManagingCursor(c); 

     View x = spinStat.getSelectedView(); 
     TextView txt2 = (TextView) x.findViewById(R.id.txtStatID); 
     String Status = String.valueOf(txt2.getText()); 
     Cursor b = dbHelper.getAccByStatus(Status); 
     startManagingCursor(b); 

     String[] from = new String[]{DatabaseHelper.colName, DatabaseHelper.colAmount, DatabaseHelper.colTermsClass, DatabaseHelper.colStatClass}; 
     int[] to = new int[]{R.id.colName, R.id.colAmount, R.id.colTerms, R.id.colStat}; 

     SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.gridrow, c, from, to); 
     grid.setAdapter(sca); 

     SimpleCursorAdapter sba = new SimpleCursorAdapter(this, R.layout.gridrow, b, from, to); 
     grid.setAdapter(sba); 

    } catch (Exception ex) { 
     AlertDialog.Builder b = new AlertDialog.Builder(this); 
     b.setMessage(ex.toString()); 
     b.show(); 
    } 
} 

的dbHelper片段的条件和状态:

public Cursor getAccByTerms(String Terms) 
{ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    String [] columns=new String[]{"_id",colName,colAmount,colPurpose,colTermsClass,colDate,colEditDate,colStatClass}; 
    Cursor c=db.query(viewAccs, columns, colTermsClass+"=?", new String[]{Terms}, null, null, null); 
    return c; 
} 

public Cursor getAccByStatus(String Status) 
{ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    String [] columns=new String[]{"_id",colName,colAmount,colPurpose, colTermsClass,colDate,colEditDate,colStatClass}; 
    Cursor d=db.query(viewAccs,columns, colStatClass +"=?",new String[]{Status},null,null,null); 
    return d; 
} 

而公用事业片断哪里我保留了ManageSpinner的内容:

public class Utilities { 
static public void ManageTermSpinner(Context context, Spinner view) { 
    DatabaseHelper dbHelper = new DatabaseHelper(context); 

    Cursor c = dbHelper.getAllTerms(); 

    SimpleCursorAdapter ca = new SimpleCursorAdapter(context, R.layout.termspinnerrow, c, new String[]{DatabaseHelper.colTermsClass, "_id"}, new int[]{R.id.txtTermClass}); 

    view.setAdapter(ca); 


} 

static public void ManageStatSpinner(Context context, Spinner view) { 
    DatabaseHelper dbHelper = new DatabaseHelper(context); 

    Cursor d = dbHelper.getAllStatus(); 

    SimpleCursorAdapter da = new SimpleCursorAdapter(context,R.layout.statspinnerrow, d, new String[]{DatabaseHelper.colStatClass,"_id"}, new int[]{R.id.txtStatClass}); 

    view.setAdapter(da); 
} 
+0

我真的不明白的问题,但我知道你想筛选基于两个条件的结果。你将不得不改变你正在使用的SQLite查询。使用where子句中的AND子句基于两个spinners过滤结果。更好的写下这段代码“dbHelper.getAccByTerms(Terms);” – drulabs 2015-02-23 16:39:00

+0

感谢您的提醒。澄清了我的主要担忧并添加了片段。我会研究你提到的AND和WHERE子句并回复给你。再次感谢 – Cai 2015-02-24 13:09:26

回答

0

这是你需要怎么做:

public Cursor getAccByTermsAndStatus(String Terms, String status) 
{ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    String [] columns=new String[]{"_id",colName,colAmount,colPurpose,colTermsClass,colDate,colEditDate,colStatClass}; 
    Cursor c=db.query(viewAccs, columns, colTermsClass+"=? AND " + colStatClass + "=?", new String[]{Terms, status}, null, null, null); 
    return c; 
} 
+0

当我尝试使用你提到的WHERE和OR子句时,是有相同的代码,除了我的语法全是“”哈哈。非常感谢,欢呼! – Cai 2015-02-24 13:50:04