Je souhaite placer un menu contextuel dans une liste. Cela semble très simple à faire mais j'ai un comportement intéressant. La listview a deux champs, un textview et un editText. La pression longue ouvre le menu sur l'EditText mais nulle part ailleurs sur la liste. Voici les morceaux de code.Menu contextuel android listview
public class ManageClass extends ListActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.manageclass);
//Tons of not relevant stuff that I would be happy to provide.
pfdata = new PortfolioData(this);
try {
Cursor cursor = getClasses();
showClasses(cursor);
} finally {
pfdata.close();
}
}
private Cursor getClasses() {
String sql = "select c._id, c.NAME as NAME , c.percentage as PERCENTAGE "
+ "from asset_classes c;";
SQLiteDatabase db = pfdata.getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
startManagingCursor(cursor);
return cursor;
}
private void showClasses(Cursor cursor) {
adapter = new MySimpleCursorAdapter(this, R.layout.classrow, cursor,
FROM, TO, t);
// Log.d("TEST", Integer.toString(adapter.getCount()));
setListAdapter(adapter);
adapter.notifyDataSetChanged();
//I've tried moving this line around but it hasn't made a difference.
registerForContextMenu(getListView());
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, 0, 0, "A");
menu.add(Menu.NONE, 1, 1, "B");
menu.add(Menu.NONE, 2, 2, "C");
}
Enfin, la mise en page elle-même que je l'avoue est trop compliqué
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/editText1"
android:layout_width="300px"
android:layout_height="wrap_content"
android:text="@string/TCLabel" />
<TextView
android:id="@+id/classtotalpercentage"
android:layout_width="109dp"
android:layout_height="wrap_content"
android:textSize="50px" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/AddClassLabel"
android:layout_width="200px"
android:layout_height="wrap_content"
android:layout_weight="0.38"
android:text="@string/AddClassLabel" />
<Button
android:id="@+id/addclass_button"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/addclassbutton_label" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/grey"
android:orientation="horizontal"
android:padding="10sp" >
<TextView
android:id="@+id/assetclassHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/assetclassHeader"
android:width="200dp" />
<TextView
android:id="@+id/percentageHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/assetclassHeader"
android:text="@string/percentageHeader"
android:width="100dp" />
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:fadeScrollbars="false"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_list_data" />
</RelativeLayout>
</LinearLayout>
Je vous remercie des conseils. Je voudrais le menu sur le textview et pas l'edittext, si possible.
Une mise à jour. J'ai trouvé que cela avait quelque chose à voir avec EditText. Si je le change en vue de texte ou si je le supprime complètement, alors tout fonctionne comme il se doit.
J'apprécie votre aide. J'ai déjà changé toute mon approche de cet écran, donc je ne peux pas réellement vérifier qu'il prendrait soin de ce que je voyais. – Clavijo
J'ai eu le même problème avec HorizontalScrollView dans l'élément List; Votre réponse m'a aidé. Je vous remercie. – vivek