如何在Android中的数据库中查找特定列的ArrayAdapter中的信息

时间:2014-04-10 13:37:55

标签: android sqlite

我想要完成的是查明查询返回的数据库中是否存在特定列中的信息。如果那里有信息,那么我将有一个声音和一个祝酒词。查询部分工作正常,信息以我想要的方式显示在listView中。 我如何找出该领域的内容? 以下是查询和结果的代码:

public void doSearch(View v) {
String prefValue = UIHelper.getText(this, R.id.editText1);
    scans = datasource.findFiltered("isbn = " + prefValue, "isbn ASC");
    ArrayAdapter<Scan> adapter = new ScanListAdapter(this, scans);
    if (scans.isEmpty()) {
        Toast.makeText(this, "ISBN Not Found",Toast.LENGTH_LONG).show();
        MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.miss);
        mediaPlayer.start();
    } else {
    setListAdapter(adapter);
    MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.chaching);
    mediaPlayer.start();


    Scan supply = scans.get(0);
    Log.i(LOGTAG,  supply+ " is at index ");

    if(null == supply) {

    } else { 
                Toast.makeText(this, "Requires Supply!",Toast.LENGTH_LONG).show();
                MediaPlayer supplyPlayer = MediaPlayer.create(this, R.raw.meep1);
                supplyPlayer.start();
            } 
    }
    }

以下是查询:

public List<Scan> findFiltered(String selection, String orderBy) {

Cursor cursor = database.query(ScanDBOpenHelper.TABLE_SCANS, allColumns, 
        selection, null, null, null, orderBy);

Log.i(LOGTAG, "Returned " +cursor.getCount() + " rows");

    List<Scan> scans = cursorToList(cursor);
return scans;

}

private List<Scan> cursorToList(Cursor cursor) {
List<Scan> scans = new ArrayList<Scan>();
if (cursor.getCount() >0) {
    while (cursor.moveToNext()) {
        Scan scan = new Scan();
        scan.setId(cursor.getLong(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_ID)));
        scan.setTitle(cursor.getString(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_TITLE)));
        scan.setIsbn(cursor.getString(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_ISBN)));
        scan.setAuthor(cursor.getString(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_AUTHOR)));
        scan.setPrice(cursor.getDouble(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_PRICE)));
        scan.setIePrice(cursor.getDouble(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_IE)));
        scan.setMaxLimit(cursor.getString(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_LIMIT)));
        scan.setSupply(cursor.getString(cursor.getColumnIndex(ScanDBOpenHelper.COLUMN_SUPPLY)));
        scans.add(scan);    
    } 
} 
return scans;

以Scan supply = scans.get(0)开头的部分是我试图查找信息的地方。它坐着,它会做我想要的,但我没有使用正确的字段。     Screen shot of emulator 我需要获取供应字段中的信息。有什么建议?如果我不清楚或您需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

怎么样?

for (Scan scan : scans) {
    String supply = scan.getSupply();
    if (supply != null && supply.length() > 0) {
        Toast.makeText(this, "Requires Supply!",Toast.LENGTH_LONG).show();
        MediaPlayer supplyPlayer = MediaPlayer.create(this, R.raw.meep1);
        supplyPlayer.start();
    }
}