Hi,
danke für deine Antwort. Leider komme ich noch nicht zum gewünschten Ergebnis...hier ist mal der relevante Code:
Mein xmlFile
1<?xml version="1.0" encoding="UTF-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical" android:layout_width="fill_parent"
4 android:layout_height="fill_parent">
5
6 <ListView android:id="@+id/android:list" android:layout_width="fill_parent"
7 android:layout_height="wrap_content">
8 </ListView>
9 <TextView android:id="@+id/android:empty"
10 android:layout_width="fill_parent" android:layout_height="wrap_content" />
11
12</LinearLayout>
ListKlasse
1imports[...]
2
3public class TaskOverviewListView extends ListActivity {
4
5 @Override
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.playground);
9
10 ArrayList<Task> tasks = getTaskArray();
11
12 TaskAdapter taskAdapter = new TaskAdapter(this, tasks);
13 setListAdapter(taskAdapter);
14
15 registerForContextMenu(getListView());
16
17 }
18
19 public ArrayList<Task> getTaskArray(){
20 DBAdapter db = new DBAdapter(this);
21 ArrayList<Task> tempTasks = new ArrayList<Task>();
22
23 db.open();
24 Cursor c = db.getAllTasks();
25 if (c.moveToFirst()) {
26 do {
27 Task t = new Task(Integer.valueOf(c.getString(0)).intValue(), c
28 .getString(1), c.getString(2), c.getString(3), c
29 .getString(4));
30 tempTasks.add(t);
31 } while (c.moveToNext());
32 }
33 db.close();
34 return tempTasks;
35 }
36
37 public void onCreateContextMenu(ContextMenu menu, View v,
38 ContextMenuInfo menuInfo) {
39 super.onCreateContextMenu(menu, v, menuInfo);
40 menu.setHeaderTitle("Menu");
41 menu.add(0, 0, 0, "Edit");
42 menu.add(0, 1, 0, "Delete");
43 }
44
45 @Override
46 public boolean onContextItemSelected(MenuItem item) {
47 AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
48 .getMenuInfo();
49
50 switch (item.getItemId()) {
51
52 case 0:
53 System.err.println("EDIT");
54 return true;
55
56 case 1:
57 System.err.println("DELETE");
58 return true;
59 }
60 return super.onContextItemSelected(item);
61 }
62}
Meine Adapterklasse:
1class TaskAdapterView extends LinearLayout {
2 public TaskAdapterView(Context context, Task task) {
3 super(context);
4
5 LinearLayout.LayoutParams urgencyParams = new LinearLayout.LayoutParams(
6 10, LayoutParams.FILL_PARENT);
7 LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
8 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1);
9 LinearLayout.LayoutParams descParams = new LinearLayout.LayoutParams(
10 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
11
12 View urgency = new View(context);
13 switch (Integer.parseInt(task.getUrgency())) {
14 case 1:
15 urgency.setBackgroundColor(Color.GREEN);
16 break;
17 case 2:
18 urgency.setBackgroundColor(Color.BLUE);
19 break;
20 case 3:
21 urgency.setBackgroundColor(Color.RED);
22 break;
23 default:
24 break;
25 }
26
27 TextView space = new TextView(context);
28 space.setText(" ");
29
30 TextView subject = new TextView(context);
31 subject.setText(task.getSubject());
32
33 TextView tab = new TextView(context);
34 tab.setText("\t");
35
36 TextView description = new TextView(context);
37 description.setText(task.getDescription());
38
39 CheckBox done = new CheckBox(context);
40 done.setChecked(true);
41
42 addView(urgency, urgencyParams);
43 addView(space, textParams);
44 addView(subject, textParams);
45 addView(tab, textParams);
46 //addView(description, descParams);
47 addView(description, textParams);
48 addView(done, textParams);
49
50 }
51}
52
53public class TaskAdapter extends BaseAdapter {
54 private Context context;
55 private List<Task> tasklist;
56
57 public TaskAdapter(Context context, List<Task> tasklist) {
58 this.context = context;
59 this.tasklist = tasklist;
60 }
61
62 public int getCount() {
63 return tasklist.size();
64 }
65
66 public Object getItem(int position) {
67 return tasklist.get(position);
68 }
69
70 public long getItemId(int position) {
71 return position;
72 }
73
74 public View getView(int position, View convertView, ViewGroup parent) {
75 Task task = tasklist.get(position);
76 return new TaskAdapterView(this.context, task);
77 }
78
79}
Das Programm läuft soweit. Allerdings erscheint
kein Contextmenu wenn ich auf meinen Listeneintrag (bestehend aus verschiedenen Views) klicke. Wenn ich allerdings eine TextView für das Contextmenu registriere, dann erscheint es.
Hat jemand eine Idee / findet jemand den Fehler den ich gemacht habe?
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.