0

私は、sqliteデータベースファイルの列を使用して私のtextviewを設定しています。私はビューを前後に変更すると、データベースから取得する間に非常に明白な遅れがあります。コードされていますSqliteデータベースは、アンドロイドのアプリケーションのTextViewを変更する

public class Flipcard extends Activity implements OnClickListener { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardFront); 
    layMain.setOnClickListener(this); 
    Cursor cur; 
    DbH db = null; 
    TextView tv=(TextView) findViewById(R.id.TV_Word); 
    TextView txtView=(TextView) findViewById(R.id.TV_CardNo); 
    try { 
     db=new DbH(this); 
    } catch (IOException e2) { 

     e2.printStackTrace(); 
    } 
    try { 
     db.createdatabase(); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
    db.opendatabase(); 
    cur=db.data(); 
    cur.moveToFirst(); 
    tv.setText(cur.getString(0)); 
    cur.close(); 
} 
public void onClick(View v) { 
Intent i=new Intent(this,Flipcard_back.class); 
startActivity(i); 
} 

} 

クリック時に呼び出されている他のjavaファイルがある:

実際に以前one.The問題を呼び出している
public class Flipcard_back extends Activity implements OnClickListener{ 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_back); 
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardRear); 
    layMain.setOnClickListener(this); 
} 
public void onClick(View v) { 
Intent i=new Intent(this,Flipcard.class); 
startActivity(i); 
} 
} 

は私が私の上の1つの非常に初期の段階だですアプリケーションの開発。現在、私は最初のjavaファイルで2つのtextviewsを変更しようとしています私のデータベース。私は前後に切り替えるときに秒の遅れがあります。どうすれば修正できますか?私は何か間違っている。 また、私はgetstring(1)などを使用してすべての行を取得することができません。なぜそうですか?列を1つずつ取得するにはどうすればよいですか?

+0

編集:Logcatは前後に切り替える度に次のように表示されます:mSize = 1048576、size = 70、freeSpace()= 26、numRows = 2736は既に2736行size = 1048576 startPos 0row 2736でfieldDirの割り当てに失敗しました。これはどういう意味ですか? – Maxsteel

+0

[詳細なログキャスト]のこの例に従ってください(http://stackoverflow.com/questions/10263248/android-unable-to-instantiate-activity-classnotfound-fails-on-one-eclipse) – Sam

答えて

1

遅延は、メインスレッドでデータベースにアクセスすることによって発生します。そのスレッドは、独自のスレッドで実行する必要があります。ここでは、開発者用ガイドProcesses and Threadであり、これはあなたに壮大な概要を与えるでしょう。次に、データベースにアクセスするための1つのアプローチとして、AsyncTaskのようなものを探します。

データベースから結果が得られないのは、dbに関連付けられているクラスが表示されていないとわかりません。より多くのヘルプが必要な場合は、そのコードとログキャッチエラーを質問に含めてください。あなたは、私は、データベースをキシにするときのsqlite +アンドロイドからの私の経験では、そのその最初は非常に遅いですsimilar question and detailed answer.

0

にこのリンクを見つけたが、それができることを後に提供エラーコードで

EDIT

大量のデータを非常に高速に取得できます。遅れを避けたい場合は、代わりにファイルを使用してください。 私の小さな経験は、それが遅すぎる(そして大きさが大きかった)ので、テキストファイル用にデータベースを放棄しなければならなかった辞書アプリWordlist Proの開発から来ています。

関連する問題