Statt String Array nun Cursor Objekt an ContextMenu binden, aber WIE?

  • Antworten:1
Wdmprojekt
  • Forum-Beiträge: 33

12.01.2011, 10:28:23 via Website

Hallo ich möchte folgenden Ansatz transferieren auf ein Cursor Objekt,
also Daten nicht aus einem Array an das Menu binden, sondern Daten aus der Datenbank.
Wie mache ich das, vorausgesetzt, dass alle Daten bereits in "Cursor DB.getAllEntries()" zur Verfügung stehen?

Sorry für die unschöne Code-Formatierung, aber die Code-Formatierung greift irgendwie nicht...

[code]
public class ListActivity extends Activity {
private String[] Countries;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// The data for the list
Countries = getResources().getStringArray(R.array.countries);
Arrays.sort(Countries);

// The list view
ListView list = (ListView)findViewById(R.id.list);

// Bind data to list and register for context menu
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, Countries);
list.setAdapter(adapter);
registerForContextMenu(list);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (v.getId()==R.id.list) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle(Countries[info.position]);
String[] menuItems = getResources().getStringArray(R.array.menu);
for (int i = 0; i<menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItems[i]);
}
}
}

@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
String[] menuItems = getResources().getStringArray(R.array.menu);
String menuItemName = menuItems[menuItemIndex];
String listItemName = Countries[info.position];

Toast toast = Toast.makeText(this, String.format("Selected %s for item %s", menuItemName, listItemName), Toast.LENGTH_SHORT);
toast.show();
return true;
}
}
[/code]

— geändert am 12.01.2011, 14:22:44

Antworten
Gelöschter Account
  • Forum-Beiträge: 178

14.01.2011, 23:35:27 via Website

Also an Menus habe ich bisher nur Arrays gehängt. Aber müsstest Du nicht anstatt eines ArrayAdapter einen ListAdapter nehmen?
So mache ich das bei meinen Spinner, die ich mit Werte aus einer DB befülle.

1mDataBase = new DataBase(this);
2 mDataBase.open();
3 Cursor mCursor = mDataBase.query(....... ...parameters, null, null, null);
4 startManagingCursor(mCursor);
5
6 SimpleCursorAdapter Adapter =
7 new SimpleCursorAdapter(this, R.layout.simple_list_item, CatCursor,
8 from, to);
9 setListAdapter(Adapter);

Ich hoffe ich habe Dich richtig verstanden.

SchaffnerRadar - das Frühwarnsystem für Kontrollen

Antworten