2011-03-14 95 views
1

好心地幫助我調試或找到解決方案來解決我遇到的問題。 我在這裏要做的是,讀取數據庫中的表中的所有值一個 遊標對象。在Android上的EditText中顯示由光標在EditText中返回的結果集

然後對於一個特定的列,即UID(這是一個外鍵),我想顯示所有的多個行條目。 (比較UID cur.getString(3))

我用下面的代碼來顯示在TextView中的結果,但有一些延遲,我遇到了 。

一旦這個活動被調用,結果集並沒有被顯示,但是在幾次重新登錄嘗試後,它運行正常。 (我的應用程序有一個登錄表單)

因此,我決定使用一個TextView,可以顯示結果集點擊一個按鈕,但是當我點擊按鈕時,活動崩潰。

package com.androidarun.mobilewallet; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class DisplayCCards extends Creditcard_Registration { 


    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.creditcards_ui); 
      final EditText view = (EditText) findViewById(R.id.displayarea); 
      final StringBuilder ret = new StringBuilder(1000);   

      final MyDBAdapter db = new MyDBAdapter(getBaseContext()); 


      Button showcc = (Button) findViewById(R.id.showcc); 

      showcc.setOnClickListener(new OnClickListener() { 


       @Override 
       public void onClick(View v) { 
        Cursor cur = db.getAllCards(); 
        cur.moveToFirst(); 

        while (cur.isAfterLast() == false) { 
         if (Integer.parseInt(cur.getString(3))== UID) 
          ret.append("Credit card number: " + cur.getString(1) + " \n" + 
            " CVV : " + cur.getString(2)+ " \n " + " Validity : " + cur.getString(4)+ " \n "); 
             cur.moveToNext(); 
        } 
        cur.close(); 
        db.close(); 
       view.setText(ret); 




       } 

      }); 
+0

你有墜機任何日誌? – MByD 2011-03-14 11:38:49

+0

你可以告訴你從logcat登錄崩潰的條目 – 2011-03-14 11:49:02

+0

不,我沒有做過 – Arun 2011-03-14 12:13:39

回答

0

我認爲你正在嘗試做應該有

db.open(); 
while (cur.isAfterLast() != false) { 
        if (Integer.parseInt(cur.getString(3))== UID) 
         ret.append("Credit card number: " + cur.getString(1) + " \n" + 
           " CVV : " + cur.getString(2)+ " \n " + " Validity : " +  cur.getString(4)+ " \n "); 
            cur.moveToNext(); 
       } 
db.close(); 

你應該打開和關閉每次您嘗試訪問它時分貝。同時應該有(cur.isAfterLast()=假

0

可以使用cur.moveToNext功能作爲while條件,然後使用cur.getString(1)cur.getString(2)內環路:

while (cur.moveToNext()) { 
    Log.e("h", c1.getString(1)); 
    Log.e("h", c1.getString(2)); 
    Log.e("h", c1.getString(3));  
}