mComment = (AutoCompleteTextView) findViewById(R.id.comment); Cursor cComments = myAdapter.getdistinctComments(); scaComments = new SimpleCursorAdapter(this,R.layout.auto_complete_item,cComments,new String[] {DBAdapter.KEY_LOG_COMMENT},new int[]{R.id.text1}); mComment.setAdapter(scaComments);
auto_complete_item.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
而thi是实际控件的xml
<AutoCompleteTextView android:id="@+id/comment" android:hint="@string/COMMENT" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dp"/>
下拉列表似乎正常工作,并显示一个项目列表.当我从列表中进行选择时,在textview中得到一个sqlite对象(‘android.database.sqlite.sqliteCursor @’…).
任何人知道会导致什么,还是如何解决这个问题?
谢谢
好的,我可以挂钩OnItemClick事件,但AutoCompleteTextView小部件的TextView.setText()部分在此之后被更新. OnItemSelected()事件永远不会触发,并且在首次显示下拉项目时触发onnothingSelected()事件.
mComment.setonItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) { // Todo Auto-generated method stub SimpleCursorAdapter sca = (SimpleCursorAdapter) arg0.getAdapter(); String str = getSpinnerSelectedValue(sca,arg2,"comment"); TextView txt = (TextView) arg1; txt.setText(str); Toast.makeText(ctx,"onItemClick",Toast.LENGTH_SHORT).show(); } }); mComment.setonItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0,long arg3) { Toast.makeText(ctx,"onItemSelected",Toast.LENGTH_SHORT).show(); } @Override public void onnothingSelected(AdapterView<?> arg0) { // Todo Auto-generated method stub Toast.makeText(ctx,"onnothingSelected",Toast.LENGTH_SHORT).show(); } });
任何人有什么想法如何覆盖TextView的更新?
谢谢
帕特里克
解决方法
线86 – http://thinkandroid.wordpress.com/2010/02/08/writing-your-own-autocompletetextview/
但是,由于您使用的是SimpleCursorAdapter,因此您无法覆盖此方法.相反,您需要实现/创建一个[SimpleCursorAdapter.CursorToStringConverter] [2]并将其传递到[SimpleCursorAdapter.setCursorToStringConverter(…)] [3]中:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(context,layout,cursor,from,to); CursorToStringConverter converter = new CursorToStringConverter() { @Override public CharSequence convertToString(Cursor cursor) { int desiredColumn = 1; return cursor.getString(desiredColumn); } }; adapter.setCursorToStringConverter(converter);
或者如果您不想创建一个CursorToStringConverter,那么使用[SimpleCursorAdapter]. setStringConversionColumn(…)] [4]方法.但是我认为您仍然必须将CursorToStringConverter显式设置为null:
int desiredColumn = 1; adapter.setCursorToStringConverter(null); adapter.setStringConversionColumn(desiredColumn);
对不起,垃圾邮件拦截器不会让我发布链接到Android文档,描述我上面发布的链接.但是,快速的Google搜索将指向正确的文档页面.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。