【发布时间】:2014-12-04 12:58:52
【问题描述】:
我是 StackOverflow 的新手,这是我的第一个问题。 我一直在四处寻找帮助,但没有找到任何适合我的方法。
我正在使用 Android Studio 0.8.14,我想根据从 SQLite 获得的项目列表填充 ListView,每个人都说我应该使用 ArrayAdapter,但这对我不起作用,有人可以帮我吗出来了??
这就是我构建项目列表的方式:
//getting all items
public List < Item > getAllItems() {
SQLiteDatabase db = this.getReadableDatabase();
List < Item > items = new ArrayList < Item > ();
String selectQuery = "SELECT * FROM " + TABLE_ITEM;
Cursor c = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (c.moveToFirst()) {
do {
Item it = new Item();
it.setId(c.getInt(c.getColumnIndex(KEY_ID)));
it.setName(c.getString(c.getColumnIndex(KEY_NAME)));
it.setDescription(c.getString(c.getColumnIndex(KEY_DESCRIPTION)));
it.setPrice(c.getDouble(c.getColumnIndex(KEY_PRICE)));
it.setAdd_info(c.getString(c.getColumnIndex(KEY_ADD_INFO)));
it.category_id = c.getInt(c.getColumnIndex(KEY_ITEM_CATEGORY));
it.vegetarian = c.getInt(c.getColumnIndex(KEY_VEGETARIAN));
it.sustainable = c.getInt(c.getColumnIndex(KEY_SUSTAINABLE));
it.vegan = c.getInt(c.getColumnIndex(KEY_VEGAN));
it.frozen = c.getInt(c.getColumnIndex(KEY_FROZEN));
it.gluten_free = c.getInt(c.getColumnIndex(KEY_GLUTEN_FREE));
it.gm_free = c.getInt(c.getColumnIndex(KEY_GM_FREE));
// adding to item list
items.add(it);
} while (c.moveToNext());
}
return items;
}
在我的 MainActivity.java 我有这个:
public class MainActivity extends FragmentActivity {
private DatabaseHelper db;
List < String > categoryNames;
int categoryCount = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_categories);
db = new DatabaseHelper(this.getApplicationContext());
categoryNames = db.getAllCategoryNames();
categoryCount = catNames.size();
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) { super(fm); }
public Fragment getItem(int index) {
if (index >= 0 && index < categoryCount)
return new ListTheItems();
else
return null;
}
public CharSequence getPageTitle(int position) {
String title = "no title";
if (position >= 0 && position < categoryCount) {
title = categoryNames.get(position);
}
return title;
}
public int getCount() {
return categoryCount;
}
}
}
这是 ListTheItems.java,我尝试在 ListView 中显示项目列表中的数据:
public class ListTheItems extends Fragment {
private List < Item > allItems = new ArrayList < Item > ();
private DatabaseHelper db;
private ListView listView;
public void onCreate(Bundle saveInstanceState) {
setContentView(R.layout.list);
listView = (ListView) findViewById(R.id.itemList);
allItems = db.getAllItems();
ArrayAdapter < String > arrayAdapter = new ArrayAdapter < String > (this, android.R.layout.simple_list_item_1,
allItems);
listView.setAdapter(arrayAdapter);
}
}
我正在使用 Fragments,但在 ListTheItems.java 中,我在方法 'setContentView' 和 'findViewById' 上遇到错误,并且无法解析 'ArrayAdapter' 构造函数。
【问题讨论】:
标签: android-layout android-fragments android-listview fragment