当前位置: 首页 > 知识库问答 >
问题:

从sqlite数据库到autocompletetextview的Android字符串获取

莘俊能
2023-03-14

我正在Android上做一个sqlite数据库项目。这是我的第一个sqlite项目。我读了很多文章,创建了我的应用程序,但有一个问题,我找不到解决它的方法。我希望你能给我指条路。问题是当我通过点击按钮调用activity时,设备会启动一条消息(“不幸的是应用程序停止了”)。

package com.example.matik;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class Veritabani extends SQLiteOpenHelper {

        private static final String VERITABANI="KAYISGDATA.db";
        private static final int SURUM=1;

         public static final String TABLE_TODO = "nace";
         public static final String COLUMN_ID = "_id";
         public static final String COLUMN_CATEGORY = "KOD";
         public static final String COLUMN_SUMMARY = "ACK";
         public static final String COLUMN_DESCRIPTION = "TEH";

         private static final String DB_DROP = "DROP TABLE IF EXISTS nace";
         private static final String DATABASE_CREATE = "create table " 
                  + TABLE_TODO
                  + "(" 
                  + COLUMN_ID + " integer primary key autoincrement, " 
                  + COLUMN_CATEGORY + " text not null, " 
                  + COLUMN_SUMMARY + " text not null," 
                  + COLUMN_DESCRIPTION
                  + " text not null" 
                  + ");";

    public Veritabani(Context con, String name, CursorFactory factory,
            int version) {
        super(con, VERITABANI, null, SURUM);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(DATABASE_CREATE);
        db.execSQL("INSERT INTO nace (KOD,ACK,TEH) VALUES('01.11.07','Baklagillerin yetiştirilmesi','Tehlikeli')");}
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(DB_DROP);
        onCreate(db);
    }


}

活动课代码

package com.example.matik;
import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;

public class Matik extends Activity {
     AutoCompleteTextView auto;
     EditText nc;
     EditText th;
     Veritabani VB;
     private ArrayAdapter<String> arrayAdapter;
     ArrayList<String> Liste = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_matik);
        Liste = new ArrayList<String>();
        doldur();
        nc = (EditText) findViewById(R.id.editText2);
        th = (EditText) findViewById(R.id.editText3);
        auto = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.select_dialog_item, Liste);
        auto.setThreshold(1);
        auto.setAdapter(arrayAdapter);
    }

    private void doldur() {
        SQLiteDatabase Db = VB.getReadableDatabase();
        Cursor c = Db.rawQuery("Select ACT From nace", null);
        Db.isOpen();
        while(c.moveToNext()){
            Liste.add(c.getString(c.getColumnIndex("ACT")));
        };


    }

}

共有1个答案

乔鸿骞
2023-03-14

使用SimpleCursorAdapter,如本文所示。

_descriptionText = (AutoCompleteTextView) findViewById(R.id.description);
final int[] to = new int[]{android.R.id.text1};
final String[] from = new String[]{VehicleDescriptionsTable.DESCRIPTION};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
        android.R.layout.simple_dropdown_item_1line,
        null,
        from,
        to);

// This will provide the labels for the choices to be displayed in the AutoCompleteTextView
adapter.setCursorToStringConverter(new SimpleCursorAdapter.CursorToStringConverter() {
    @Override
    public CharSequence convertToString(Cursor cursor) {
        final int colIndex = cursor.getColumnIndexOrThrow(VehicleDescriptionsTable.DESCRIPTION);
        return cursor.getString(colIndex);
    }
});

// This will run a query to find the descriptions for a given vehicle.
adapter.setFilterQueryProvider(new FilterQueryProvider() {
    @Override
    public Cursor runQuery(CharSequence description) {
        String vehicle = getSelectedVehicle();
        Cursor managedCursor = _helper.getDescriptionsFor(vehicle, description.toString());
        Log.d(TAG, "Query has " + managedCursor.getCount() + " rows of description for " + vehicle);
        return managedCursor;
    }
});

_descriptionText.setAdapter(adapter);

从这里开始,您只需要添加一个函数来返回带有数据库的游标,并将适配器添加到您的AutoTextCompleteTextView中。您需要从日志查询中获取_ID,实际上,您可以考虑获取整行(select*from table)。如果没有列_id,请尝试select data,rowid AS_id FROM table

 类似资料:
  • 我在android中有一个sqlite数据库,例如: 表1人员: 第1列:id 第2栏:名称 第3栏:朋友 表2朋友: 第1列:id 第2栏:所有朋友 两个表中的id是相同的,table1中的id==table2中的id我想通过id从table2的特定列“allFriend”中获取所有值,并将列中的所有String值插入String数组/arrayList。

  • 我已经用SQL Server Management Studio创建了一个数据库,现在我想在我的C#应用程序中使用它。我需要连接字符串? 如何发布数据库,以便Visual Studio可以获取它?然后我就可以拉出那里的连接字符串了?

  • 我正在开发一个应用程序,其中有大约8000个印度城市的名字。当用户输入时,我使用auto complete来帮助用户完成任务。但是有些城市名字的拼写对其他州的人来说是很难猜出来的。所以我们需要一个近似的字符串匹配来实现自动完成,而不是缺省情况下的精确匹配。 例如,有这样的名字 Thirumayilai Thirunettur Thiruthuraiyur Thiruvarur 而且还 Tirune

  • 问题内容: 如何在Android上的SQLite数据库中获取布尔字段的值? 我通常使用,等获取字段的值,但似乎没有方法。 问题答案: 它是:

  • 我有一个php变量,它的值从超文本标记语言形式设置。变量的值为 正如你所看到的,它有一个特殊的字母表(e_tilda)。 现在,当我回显x时,它给出以下信息: 我不知道如何呼应原来的名字。我尝试了函数,但它不起作用。在阅读时,我所理解的功能不适合我的情况。 谁能帮我一下吗。 提前感谢。Neeraj

  • 我试图使用SQLite建立一个数据库来存储用户名和密码,但每当我在模拟器上注册一个帐户时,它就会出错。此外,如果我只是尝试登录而没有注册,它将出错。这只是我的第二篇帖子,所以如果我在发帖时有什么可以做得更好的,请告诉我! } 下面是DbHelper附带的登录类 } 这里是REGISTER类。 } 这是我运行上面描述的场景时得到的错误日志。 致命异常:主进程:com。适应。教程4,PID:4807A