1

リストビューにコンテキストメニューを配置したい。これは非常に簡単に思えますが、興味深い動作が見られます。リストビューには、textviewとeditTextの2つのフィールドがあります。長押しすると、EditTextのメニューが開きますが、リストビューの他の場所は開きません。これがコードの断片です。

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");

}

最後に、私が認めるレイアウト自体は非常に複雑です

<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>

アドバイスをいただければ幸いです。可能であれば、編集テキストではなく、テキストビューのメニューが必要です。

アップデート。EditTextと関係があることがわかりました。テキストビューに変更したり、まとめて削除したりすると、すべてが正常に機能します。

4

1 に答える 1

5

チェックボックスについても同様の問題があり、チェックボックスがフォーカスを取得したことが問題の原因であることがわかりました。属性を次のように変更しました:android:focusable = "false"

正しく動作するようになりました。

于 2012-10-15T16:49:17.117 に答える