这里是我的自定义适配器:搜索ListView控件
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
Cursor cursbbn = getCursor();
if (row == null)
{
LayoutInflater inflater = (LayoutInflater) localContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.listtype, null);
}
String Title = cursbbn.getString(2);
String Readyin = cursbbn.getString(4);
String Faovoites=cursbbn.getString(8);
TextView titler=(TextView)row.findViewById(R.id.listmaintitle);
TextView readyinr=(TextView)row.findViewById(R.id.listreadyin);
int colorPos = position % colors.length;
row.setBackgroundColor(colors[colorPos]);
titler.setText(Title);
readyinr.setText(Readyin);
ImageView picture = (ImageView) row.findViewById(R.id.imageView1);
Bitmap bitImg = BitmapFactory.decodeResource(localContext.getResources(), R.drawable.seafood);
if(Title.contentEquals("Fajita Raps"))
picture.setImageBitmap(getRoundedCornerImage(bitImg));
if (Faovoites.contentEquals("YES")) {
ImageView star = (ImageView) row.findViewById(R.id.favoritesicon);
star.setVisibility(View.VISIBLE);
}
return row;
}
,这是我的搜索EDITTEXT aftertextchanged事件
public void afterTextChanged(final Editable s) {
final String[] columns = new String[] {
"_id", COL_SanID, COL_SanTitle, COL_SanCat, COL_SanReadyin,
COL_SandServing, COL_SandIngred, COL_SandDirect, COL_SandFavor };
Bundle extrass = getIntent().getExtras();
final String Type = extrass.getString("CategoryType");
mAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
String value = "%" + constraint + "%";
String Type2 = "%" + Type + "%";
curs = mDb.query(TABLE_NAME, columns, COL_SanTitle
+ " LIKE ? And " + COL_SanCat + " LIKE ?",
new String[] { value, Type2 }, null, null,
COL_SanTitle + " ASC");
return curs;
}
});
和最后:logcat的例外
04-26 18: 56:50.310:E/AndroidRuntime(878):致命例外:main 04-26 18:56:50.310:E/AndroidRuntime(878):android.database.CursorIndexOutOfB oundsException:索引-1请求,大小为1 04-26 18:56:50.310:E/AndroidRuntime(878):at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580) 04-26 18:在android.database.AbstractWindowedCursor的E/AndroidRuntime(878):E/AndroidRuntime(878):在android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214) 04-26 18:56:50.310。 getString(AbstractWindowedCursor.java:41) 04-26 18:56:50.310:E/AndroidRuntime(878):at master.chef.mediamaster.Interface.onItemClick(Interface.java:781) 04-26 18:56: 50.310:E/AndroidRuntime(878):在android.widget.AdapterView.performItemClick(AdapterView.java:284) 04-26 18:56:50.310:E/AndroidRuntime(878):在android.widget.ListView.performItemClick ListView.java:3513) 04-26 18:56:50 .310:E/AndroidRuntime(878):at android.widget.AbsListView $ PerformClick.run(AbsListView.java:1812) 04-26 18:56:50.310:E/AndroidRuntime(878):at android.os.Handler .handleCallback(Handler.java:587) 04-26 18:56:50.310:E/AndroidRuntime(878):在android.os.Handler.dispatchMessage(Handler.java:92) 04-26 18:56:50.310 :E/AndroidRuntime(878):在android.os.Looper.loop(Looper.java:123) 04-26 18:56:50.310:E/AndroidRuntime(878):在android.app.ActivityThread.main(ActivityThread的.java:3683) 04-26 18:56:50.310:E/AndroidRuntime(878):在java.lang.reflect.Method.invokeNative(本机方法) 04-26 18:56:50.310:E/AndroidRuntime( 878):at java.lang.reflect.Method.invoke(Method.java:507) 04-26 18:56:50.310:E/AndroidRuntime(878):at com.android.internal.os.ZygoteInit $ MethodAndArgsCal ler.run(ZygoteInit.java:839) 04-26 18:56:50.310:E/AndroidRuntime(878):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-26 18:56:50.310:E/AndroidRuntime(878):在dalvik.system.NativeStart.main(本机方法)
什么是'mDb',你在哪里声明它?也许我们也需要看看你使用它的所有地方。 – 2012-04-22 07:42:34
我在同一个类SQLiteDatabase mDb的主活动中声明mDb数据库;还有MyDbHelper mHelper来创建数据库表并定义列。我认为这个问题不在数据库中,因为它正确地检索了这些值,并且我还可以在未定义自定义cursoradapter的情况下搜索视图。当我添加自定义适配器的第一行(这是移动到光标位置)它给了我这个错误。请让我知道,如果你需要更多的代码 – 2012-04-22 07:50:14