1

我目前的代码是:

content = ((MainActivity)getActivity()).connectDB(MY_DB, TABLE, ID, FIELD, ID, null);
listView.setAdapter(new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, content));

我想手动将第一项添加到 listView,然后从数据库中填充所有下一项。

我在调用connectDB之前尝试过,content.add(0,"String");但它导致错误

4

3 回答 3

1

使用标题视图并将其应用于您的列表视图,这将完成同样的事情,但要保持您的 arrayadapter 代码整洁干净(仅用于获取数据库内容)。

content = ((MainActivity)getActivity()).connectDB(MY_DB, TABLE, ID, FIELD, ID, null);
TextView tv = new TextView(getActivity());
tv.setText("lorem ipsum");
listView.addHeaderView(tv);
// then normal array adapter set
listView.setAdapter(new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, content));

更多信息 :

于 2013-10-22T17:14:07.840 回答
1

根据您的代码,它非常简单。这里有一些硬编码的东西作为你可能做的例子。

public List<String> getMockDataFromDatabase() {
  List<String> itemList = new ArrayList<String>();
  itemList.add("Item 1");
  itemList.add("Item 2");
  itemList.add("Item 3");
  itemList.add("Item 4");
  return itemList;
}

public void setupListAdapter() {
  List<String> itemList = new ArrayList<String>();
  itemList.add("New First Item");
  itemList.addAll(getMockDataFromDatabase());
  listView.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, itemList));
}

我重新创建列表的原因是,如果您只是将其添加为标题视图,它将不会在活动进行一段时间后保留,而 ListView 将在内部保留适配器,从而保留其中的项目。

于 2013-10-22T17:16:43.680 回答
0
List items = new ArrayList();

//some fictitious objectList where we're populating data
for(Object obj : objectList) {
    content.add(0,"String");
    items.add(1, obj);
    listAdapter.notifyDataSetChanged();
    listView.scrollTo(0, 0);
}

试试这个:在 0 处我们添加了我们的字符串,然后在 1 处我们填充了我们的列表视图数据。

于 2013-10-22T17:14:23.970 回答