SQLite与AutoCompleteTextView结合使用
发布时间:2020-12-12 20:24:58 所属栏目:百科 来源:网络整理
导读:取SQLite中的数据显示在AutoCompleteTextView中,支持动态加入SQLite中不存在的数据. [java] view plain copy print ? package zhang.ya; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.app.Activity; i
取SQLite中的数据显示在AutoCompleteTextView中,支持动态加入SQLite中不存在的数据.
[java]
view plain
copy
print
?
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(1); 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,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() <= 0)//判断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,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 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[8192]; int count = 0; while ((count = is.read(buffer)) > 0) { 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() == 0)//没有同名记录,则插入数据 { sql = "insert into course_name(course_name)values(?)"; database.execSQL(sql,new Object[] { courseName.getText().toString() }); } else { Log.i("zhangya","else"); } cursor.moveToFirst(); } } 1.未输入时状态: 2.输入后: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |