2011-07-21 26 views
0

使用時,選擇一個ListView我有這樣的代碼:如何使用R 3與ListActivity

public class MyActivity extends ListActivity implements OnClickListener { 
    private ArrayList<String> listItems = new ArrayList<String>(); 
    ArrayAdapter<String> adapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setAdapter(); 
     this.bindButtons(); 
    } 
    private void setAdapter() { 
     setContentView(R.layout.siteactivity); 
     adapter=new ArrayAdapter<String>(this, 
       R.layout.siteitem, 
       listItems); 
     setListAdapter(adapter); 
    } 
    private void bindButtons() { 
     findViewById(R.id.buttonPrevious).setOnClickListener(this); 
     findViewById(R.id.buttonNext).setOnClickListener(this); 
    } 
    // ... 
} 

用這個佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:id="@+id/siteActivity"> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/navigation"> 
    <Button 
     android:text="&lt;=" 
     android:textSize="12dp" 
     android:id="@+id/buttonPrevious" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </Button> 
    <Button 
     android:text="=&gt;" 
     android:textSize="12dp" 
     android:id="@+id/buttonNext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </Button> 
</LinearLayout> 
<ListView 
    android:id="@android:id/list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/navigation" 
    android:layout_above="@+id/transport_selection" 
    /> 
</RelativeLayout> 

注意ListView控件的android:id="@android:id/list"。如果我將它替換爲android:id="@+id/list",我的活動就會關閉,因爲我的「內容必須有一個ListView,其id屬性是'android.R.id.list'」,但我認爲這是預期的行爲。

現在,我想添加一個上下文菜單到ListView的項目。我嘗試了registerForContextMenu(findViewById(R.id.list));,但它不起作用,因爲android:id

然後,我該如何添加一個上下文菜單?

問候,

+0

你試過android.R.id.list?你的R.java中有'list'嗎? –

回答

1

當您使用ListActivity,你可以使用下面的代碼獲取代碼列表視圖:

ListView myListView=getListView(); 
1

使用android.R.id.list代替R.id.list

(順便說一句,你寫到這裏原來有答案錯誤消息)

基本上,在XML定義爲@android:whatever東西是一樣的,在Java代碼android.R.whatever。任何在XML中定義的(看起來像@whatever)都與Java代碼中的R.whatever相同。

最終編輯:如果您使用的是ListActivity,您需要有一個ListView的編號爲@android:id/list。因此,除非您想爲自己的活動添加另一個ListView,否則您不需要@+id/list(或R.id.list)。

0

您需要創建一個AlertDialog並調用該對話框以在列表視圖的onItemLongClick()事件中顯示。例如,點擊here