2
我使用以下代碼捕獲gridview項目單元格上的單擊。這工作正常。使用Spinner處理GridView單元格中的單擊事件
grid_main.setAdapter(new ImageAdapter(this));
grid_main.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
}
});
然後,我在GridView單元格內添加了一個Spinner對象。現在,我可以點擊Spinner對象,但包含的gridview單元格不再響應點擊。我假設Spinner偵聽器正在替換gridview偵聽器。 gridview和spinner的監聽者都能很好地工作,但是我一起遇到了問題。我需要能夠點擊兩者。下面是微調代碼:
final Spinner spinner = (Spinner) v.findViewById(R.id.driver_list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(DispatchMonitorCalls.this,
android.R.layout.simple_spinner_item, driverlist_name);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
下面是佈局的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/driverrow"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="left"
android:gravity="left" >
<TextView
android:id="@+id/row_locationtype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dip"
android:layout_alignParentTop="true"
android:text="Empty"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/row_timestamp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/row_locationtype"
android:layout_below="@+id/row_locationtype"
android:text="Empty"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/row_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/row_locationtype"
android:layout_below="@+id/row_timestamp"
android:text="Empty"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#ff8080" />
<Spinner
android:id="@+id/driver_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/row_locationtype"
android:layout_below="@+id/row_status"
android:paddingBottom="20dp" />
</RelativeLayout>
預先感謝您。
如果你不能解決這個問題,你可能想嘗試一個醜陋的方法。爲Spinner創建一個onItemClickListener,它簡單地調用GridView項目的onItemClickListener。 –
單擊單元格通常會打開另一個屏幕,其中包含詳細信息(超過單元格視圖中提供的幾行)。微調只是一個最常用的功能的快捷方式(他們從列表中選擇一個名稱,並對其進行操作)。如果他們採取了該行動,則在完成工作時不必打開附加視圖。如果我將微調器放在另一個屏幕(詳細視圖)中,那麼我可能會遇到另一個問題,因爲該屏幕還包含一個偵聽器。 – user2512069
這似乎是一個常見問題,但我沒有找到與此問題的線索。 – user2512069