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 コードをきれいに保ちます (db コンテンツのフェッチのみ)。

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 に答える