读取SQLite中的数据显示在AutoCompleteTextView中,支持动态加入SQLite中不存在的数据.

package zhang.ya;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream; import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.TextView; public class Test00 extends Activity implements TextWatcher, OnClickListener
{
private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/course_name";
private AutoCompleteTextView courseName;
private final String DATABASE_FILENAME = "course_name.db3";
private SQLiteDatabase database;
private Button btnSelectWord; @Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState); setContentView(R.layout.main);
database = openDatabase();
courseName = (AutoCompleteTextView) findViewById(R.id.courseName);
courseName.setThreshold();
courseName.addTextChangedListener(this);
btnSelectWord = (Button) findViewById(R.id.buttonName);
btnSelectWord.setOnClickListener(this);
} public class CourseNameAdapter extends CursorAdapter
{
private LayoutInflater layoutInflater; @Override
public CharSequence convertToString(Cursor cursor)
{
return cursor == null ? "" : cursor.getString(cursor.getColumnIndex("course_name"));
} private void setView(View view, Cursor cursor)
{
TextView tvWordItem = (TextView) view;
tvWordItem.setText(cursor.getString(cursor.getColumnIndex("course_name")));
} @Override
public void bindView(View view, Context context, Cursor cursor)
{
setView(view, cursor);
} @Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
View view = layoutInflater.inflate(R.layout.word_list_item, null);
setView(view, cursor);
return view;
} public CourseNameAdapter(Context context, Cursor c, boolean autoRequery)
{
super(context, c, autoRequery);
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
} //输入为空则使得确定按钮失效,只有输入了数据才使得按钮处于活动状态
@Override
public void afterTextChanged(Editable s)
{
Log.i("zhangya", "textchage");
String contentStr = s.toString(); if (contentStr == null || contentStr.length() <= )//判断contentStr是否为空,判断字符串是否为空典型写法
{
Log.i("zhangya", "afterTextChanged null");
btnSelectWord.setEnabled(false);//为空则不是能按钮 } else
{
Log.i("zhangya", "afterTextChanged not null");
btnSelectWord.setEnabled(true);
Cursor cursor = database.rawQuery("select * from course_name where course_name like ?", new String[]
{ contentStr + "%" }); CourseNameAdapter dictionaryAdapter = new CourseNameAdapter(this, cursor, true);
courseName.setAdapter(dictionaryAdapter);
}
} @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
// TODO Auto-generated method stub } @Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{ } private SQLiteDatabase openDatabase()
{
try
{
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists())
{
InputStream is = getResources().openRawResource(R.raw.course_name);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[];
int count = ;
while ((count = is.read(buffer)) > )
{
fos.write(buffer, , count);
} fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
return database;
} catch (Exception e)
{
}
return null;
} @Override
public void onClick(View v)
{
String sql = "select * from course_name where course_name=?";
Cursor cursor = database.rawQuery(sql, new String[]
{ courseName.getText().toString() });
if (cursor.getCount() == )//没有同名记录,则插入数据
{
sql = "insert into course_name(course_name)values(?)";
database.execSQL(sql, new Object[]
{ courseName.getText().toString() });
} else
{
Log.i("zhangya", "else");
}
cursor.moveToFirst(); } }

效果图:

Android SQLite与AutoCompleteTextView的更多相关文章

  1. Android SQLite 通配符查询找不到参数问题

    使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...

  2. Android+Sqlite 实现古诗阅读应用(三)

    往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个 ...

  3. Android+Sqlite 实现古诗阅读应用(二)

    传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...

  4. Android Sqlite 数据库版本更新

      Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...

  5. Android SQLite总结(一) (转)

    Android SQLite总结(一)  郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...

  6. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

  7. Android sqlite管理数据库基本用法

    Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...

  8. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  9. Android Sqlite 导入CSV文件 .

    http://blog.csdn.net/johnnycode/article/details/7413111 今天遇到 Oracle 导出的12万条CSV格式数据导入 Android Sqlite ...

随机推荐

  1. 初学 spring

    1.spring 开发环境,包含eclipse https://spring.io/tools3/sts/all/

  2. oracle12c之二 控制PDB中SGA 与 PGA 内存使用

    oracle12c之 控制pdb中sga 与 pga 内存使用 Memory Management using Resource Manager Oracle数据库资源管理器(资源管理器)现在可以在多 ...

  3. Android SurfaceFlinger

    Android 系统启动过程Activity 创建过程Activity 与 Window 与 View 之间的关系 Android 系统从按下开机键到桌面,从桌面点击 App 图标到 Activity ...

  4. Java框架-mybatis02基本的crud操作

    1.搭建mybatis框架 1)导入相关jar包 2)编写核心配置文件(配置数据库连接的相关信息以及配置mapper映射文件) 3)编写dao操作 4)编写mapper映射文件 5)编写实体类 2.执 ...

  5. mysql故障总结

    MYSQL故障排查 https://zhuanlan.zhihu.com/p/27834293

  6. 前端中用到的图片(png图片)

    作为前端工程师,将设计师的设计稿转化为html页面,其中有一个必不可少的环节就是将psd文件中的一些图片随心所欲的使用,而我们经常用到的就是png图片. 第一部分:基本介绍 首先我们先对比几种图片: ...

  7. Bugfree安装与使用

    第一步:下载XAMPP和bugfree http://www.bugfree.org.cn/ http://www.apachefriends.org/zh_cn/xampp.html 第二步:安装 ...

  8. hibernate 中对象的3种状态总结

    1.Hibernate把对象分文三种状态:Transient(临时状态).Persistent(持久化状态).Detached(游离状态). 1)Transient:刚刚new出来的对象,就是Tran ...

  9. CentOS 7 的下载源为aliyun

    更换 CentOS 7 的下载源为阿里云     1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo ...

  10. Codeforces 156B Suspects——————【逻辑判断】

    Suspects Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit St ...