在Android应用程序中更改TextView的Sqlite数据库

时间:2012-04-21 21:07:54

标签: android android-layout android-intent mobile-application

我使用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文件是:

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

这实际上是调用前一个。问题是我是我的应用程序开发的一个非常初始阶段。现在我只是尝试使用我的数据库在第一个java文件中更改两个textview。当我来回切换时有一个大约一秒的滞后。我怎么纠正它?难道我做错了什么。       此外,我无法使用getstring(1)等检索所有行。为什么这样?我如何逐个获取列?

2 个答案:

答案 0 :(得分:1)

延迟是由在主线程中访问数据库引起的,您希望它在自己的线程中运行。这是Processes and Thread上的开发人员指南,它将为您提供全面的概述。对于访问数据库的一种方法,请查看下一步的AsyncTask。

至于没有从数据库中获取结果,如果没有看到与db相关联的类,我就无法分辨。如果您需要更多帮助,请在您的问题中包含该代码和任何logcat错误。

修改

使用您提供的错误代码,我发现此链接指向similar question and detailed answer.

答案 1 :(得分:0)

我从sqlite + android获得的经验是,它在查询数据库时最初非常慢,但之后它可以非常快速地检索大量数据。如果您想避免延迟,请改用文件。 我的小经验来自开发字典应用程序Wordlist Pro,我不得不放弃数据库中的文本文件,因为它太慢了(而且体积很大)。