2012-07-21 106 views
1

我想提出一個上下文菜單列表視圖。這似乎很簡單,但我得到了一些有趣的行爲。該列表視圖有兩個字段,一個textview和一個editText。長按會在EditText上打開菜單,但在列表視圖中沒有其他位置。 以下是代碼段。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"); 

} 

最後,這點我承認佈局本身過於複雜

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

我明白任何建議。如果可能的話,我希望textview上的菜單而不是edittext。

更新。我發現它與EditText有關。如果我將其更改爲textview或將其全部刪除,則所有內容都按照原樣運行。

回答

5

我有一個複選框類似的問題,發現問題是由複選框獲得焦點而引起的。我改變了attribue到: 機器人:可調焦=「假」

,它現在可以正常工作。

+0

我感謝你的幫助。我已經改變了我對這個屏幕的整個方法,所以我不能確定它會照顧我所看到的。 – Clavijo 2012-10-17 16:20:23

+0

我在列表元素有同樣的問題Horizo​​ntalScrollView;你的回答幫助了我。謝謝。 – vivek 2015-08-18 06:52:43