Java 在自定义ListView中显示SQLite数据
我试图将数据从SQLite显示到自定义ListView中。我得到了数据,我可以将其显示到ListView中,但我有一个问题 每次我滚动到ListView中的最后一个数据时,它总是出错。据说ArrayIndexOutOfBoundsException。我已经搜索过了,但仍然找不到解决方案 所以我想问的是,如何修复这个错误,或者是否有其他方法可以用来在ListView中显示数据 这是我的DatabaseHandler.java 这是我的Search.java 这是我的CustomAdapter.java } 有人能帮我吗?谢谢:DSearch.javaJava 在自定义ListView中显示SQLite数据,java,android,sqlite,android-listview,Java,Android,Sqlite,Android Listview,我试图将数据从SQLite显示到自定义ListView中。我得到了数据,我可以将其显示到ListView中,但我有一个问题 每次我滚动到ListView中的最后一个数据时,它总是出错。据说ArrayIndexOutOfBoundsException。我已经搜索过了,但仍然找不到解决方案 所以我想问的是,如何修复这个错误,或者是否有其他方法可以用来在ListView中显示数据 这是我的DatabaseHandler.java 这是我的Search.java 这是我的CustomAdapter.ja
将光标转换为AllItem时出错 使用CursorAdapter和Filtrable界面过滤结果使用Android Genius推荐的Search.java 现在使用传入CustomAdapter.java的AllItem类
这一定与您的这段代码有关:items.get3*position。您的意图是什么?使用SimpleCorsorAdapter而不是ArrayAdapter来表示职位以及我使用了多少列。@pskink您能给我举个例子吗?还是很好的教程?谢谢回复。但我在areaName.setTextitems.getposition上出错;said`typoe中的方法setText CharSequence不适用于allItemi告诉u的参数AllItem必须有类AllItem的属性在get方法之后添加它们到所有这些示例看起来有点多余,但很好。
// Getting All search result
public List<AllItem> getAllSearchResult(String searchResult) {
List<AllItem> allsearchResultList = new ArrayList<AllItem>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_ALLITEM + " WHERE " + KEY_ITEM_NAME_ALLITEM + " LIKE '%"+searchResult+"%' ";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
AllItem allitem = new AllItem();
allitem.setTableID(cursor.getInt(0));
allitem.setID(cursor.getString(1));
allitem.setCategory_name(cursor.getString(2));
allitem.setItem_Name(cursor.getString(3));
allitem.setDescription(cursor.getString(4));
allitem.setAddress(cursor.getString(5));
allitem.setArea (cursor.getString(6));
allitem.setAreaName (cursor.getString(7));
// Adding searchResult to list
allsearchResultList.add(allitem);
} while (cursor.moveToNext());
}
// return searchResult list
return allsearchResultList;
}
Intent search = getIntent();
String searchResult = search.getStringExtra("TAG_SEARCH");
DatabaseHandler db = new DatabaseHandler(this);
//Cursor mCur = (Cursor) db.getAllSearchResults(searchResult);
//CurAdapter Cur = new CurAdapter(Search.this, mCur,0);
//final ListView lv = (ListView)findViewById(R.id.listSearch);
//lv.setFastScrollEnabled(true);
//lv.setAdapter(Cur);
/**
* CRUD Operations
* */
Log.d("Reading: ", "Reading all contacts..");
List <AllItem> allItems = new ArrayList<AllItem>();
allItems = db.getAllSearchResult(searchResult);
ArrayList <String> allItems2 = new ArrayList<String>();
for (AllItem cn : allItems) {
allItems2.add(cn.getItem_name());
allItems2.add(cn.getAreaNAme());
allItems2.add(cn.getCategory_name());
}
CustomAdapterSearch adapter = new CustomAdapterSearch(Search.this, allItems2);
listview.setAdapter(adapter);
public class CustomAdapterSearch extends ArrayAdapter<String> {
private final Activity context;
private final List<String> items;
public CustomAdapterSearch (Activity context, List<String> items) {
super(context, R.layout.searchlayout, items);
this.context = context;
this.items = items;
}
@Override
public View getView (final int position, View view, ViewGroup parent)
{
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.searchlayout, null, true);
TextView itemName = (TextView) rowView.findViewById(R.id.item_name);
TextView areaName = (TextView) rowView.findViewById(R.id.area_name);
TextView priceCatergory = (TextView) rowView.findViewById(R.id.price_category);
itemName.setText(items.get(3*position));
areaName.setText(items.get(3*position + 1));
priceCatergory.setText(items.get(3*position + 2));
return rowView;
}
Intent search = getIntent();
String searchResult = search.getStringExtra("TAG_SEARCH");
DatabaseHandler db = new DatabaseHandler(this);
Log.d("Reading: ", "Reading all contacts..");
List <AllItem> allItems = new ArrayList<AllItem>();
allItems = db.getAllSearchResult(searchResult);
CustomAdapterSearch adapter = new CustomAdapterSearch(Search.this, allItems);
listview.setAdapter(adapter);
public class CustomAdapterSearch extends ArrayAdapter<AllItem> {
private final Activity context;
private final List<AllItem> items;
public CustomAdapterSearch (Activity context, List<AllItem> items) {
super(context, R.layout.searchlayout, items);
this.context = context;
this.items = items;
}
@Override
public View getView (final int position, View view, ViewGroup parent)
{
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.searchlayout, null, true);
TextView itemName = (TextView) rowView.findViewById(R.id.item_name);
TextView areaName = (TextView) rowView.findViewById(R.id.area_name);
TextView priceCatergory = (TextView) rowView.findViewById(R.id.price_category);
itemName.setText(items.get(position)); // there must be property of class AllItem add them after get method
areaName.setText(items.get(position));
priceCatergory.setText(items.get(position));
return rowView;
}
Intent search = getIntent();
String searchResult = search.getStringExtra("TAG_SEARCH");
DatabaseHandler db = new DatabaseHandler(this);
/**
* CRUD Operations
* */
Log.d("Reading: ", "Reading all contacts..");
List <AllItem> allItems = new ArrayList<AllItem>();
allItems = db.getAllSearchResult(searchResult);
CustomAdapterSearch adapter = new CustomAdapterSearch(Search.this, allItems);
listview.setAdapter(adapter);
public class CustomAdapterSearch extends ArrayAdapter<AllItem> {
private final Activity context;
private final List<AllItem> items;
public CustomAdapterSearch (Activity context, List<AllItem> items) {
super(context, R.layout.searchlayout, items);
this.context = context;
this.items = items;
}
@Override
public View getView (final int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.searchlayout, null, true);
TextView itemName = (TextView) rowView.findViewById(R.id.item_name);
TextView areaName = (TextView) rowView.findViewById(R.id.area_name);
TextView priceCatergory = (TextView) rowView.findViewById(R.id.price_category);
itemName.setText(items.get(position).getItem_name());
areaName.setText(items.get(position).getAreaNAme());
priceCatergory.setText(items.get(position).getCategory_name());
return rowView;
}
}