我是Android開發人員的新手,仍然可以完成很多工作。
我有一个使用以下代碼顯示的主選單,但是無法確定如何禁用選單中的選定專案.有人可以帮我提供一些示例代碼吗?
public class listTest extends ListActivity {
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setListAdapter(ArrayAdapter.createFromResource(this, R.array.mainMenu,
android.R.layout.simple_list_item_1));
//not sure how to disable list items here
}
protected void onListItemClick(ListView list, View view, int position, long id) {
// can disable items when they are clicked on
view.setEnabled(false);
}
}
而且我有个
string-array
在我的strings.xml檔案中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="mainMenu">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</string-array>
</resources>
谢谢
最新回復
- 5月前1 #
- 5月前2 #
我相信列表項的狀態是否屬於列表項已啟用,所以我想您必须在
ListAdapter
中进行管理 .子類化適配器時,可以覆盖isEnabled(position)
.對於您在此處返迴true的任何位置,ListView都会將该專案標記為禁用。所以您想要做的是這樣的:
class MenuAdapter extends ArrayAdapter<String> { public boolean isEnabled(int position) { // return false if position == positionYouWantToDisable } }
這可能需要例如
Map
如果您希望能够使用設置器啟用/禁用某項,則管理每一項的啟用狀態。然後在ListView上設置自定義適配器。
- 5月前3 #
您可以通過同時呼叫两个列表項来禁用列表項(=使它不响應觸摸)
setClickable(false)
和
setFocusable(false)
。
預設情况下,這不会自動以圖形方式反映出来。
我当前正在列表中使用该列表,该列表的列表項不可單击,但大多數包含可單击的小部件.效果很好。
這樣,通常会绘製包括分隔符的列表項(請參阅Janusz對上面接受的答案的答複)。
- 5月前4 #
或者以簡單的方式取消註册和註册 OnItemClickListener 可以是一个更好的主意。
要註册:
lstDevice.setOnItemClickListener(context);
要註销:
lstDevice.setOnItemClickListener(null);
要在建立列表時禁用列表項,您必须从
ArrayAdapter
繼承 .您必须重寫以下方法:isEnabled(int position)
和areAllItemsEnabled()
.在以前,您返迴true
或false
取決於是否啟用了给定位置的列表項.在後者中,您返迴false
如果您想使用
createFromResource()
您也必须實施该方法,因為ArrayAdapter.createFromResource()
仍例項化ArrayAdapter
而不是您自己的適配器。最後,代碼將類似於以下內容: