我正在嘗試實現NAVIGATION_MODE_LIST,例如gmail Android應用程序。 我的主要問題是從微調列表中隱藏當前選定的項目。 因此,例如如所示,如果您選擇發送,則只有微調器中顯示其他元素。Gmail Android應用程序,如ActionView/Spinner(NAVIGATION_MODE_LIST)
我的理解說,這是一個自定義的ActionView,而不是使用NAVIGATION_MODE_LIST和自定義適配器。
我正在嘗試實現NAVIGATION_MODE_LIST,例如gmail Android應用程序。 我的主要問題是從微調列表中隱藏當前選定的項目。 因此,例如如所示,如果您選擇發送,則只有微調器中顯示其他元素。Gmail Android應用程序,如ActionView/Spinner(NAVIGATION_MODE_LIST)
我的理解說,這是一個自定義的ActionView,而不是使用NAVIGATION_MODE_LIST和自定義適配器。
如果有人正在尋找解決這裏是這個問題,
這裏是它下面的代碼創建您的適配器並將它加入到書面與link
使用幫助示例代碼動作條列表導航
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
itemArr = getResources().getStringArray(R.array.array_spinner_items);
items = toArrayList(itemArr, null);
navigationAdapter = new CustomAdapter(this, R.layout.navigation_item_layout, items);
actionBar.setListNavigationCallbacks(navigationAdapter, this);
actionBar.setDisplayShowTitleEnabled(false);
擴展BaseAdapter
或ArrayAdapter
和implement SpinnerAdapter
在您的適配器覆蓋getDropdownView這是在下拉 負責各個項目視圖,並覆蓋getView負責出現在動作條
'公共類CustomAdapter視圖擴展ArrayAdapter實現SpinnerAdapter {
Context context;
int textViewResourceId;
ArrayList<String> arrayList;
public CustomAdapter(Context context, int textViewResourceId, ArrayList<String> arrayList) {
super(context, textViewResourceId, arrayList);
this.context = context;
this.textViewResourceId = textViewResourceId;
this.arrayList = arrayList;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent){
if (convertView == null)
{
LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//convertView = vi.inflate(android.R.layout.simple_spinner_dropdown_item, null);
convertView = vi.inflate(R.layout.navigation_item_layout, null);
}
TextView textView = (TextView) convertView.findViewById(R.id.navigation_item);
textView.setText(arrayList.get(position).toString());//after changing from ArrayList<String> to ArrayList<Object>
if (position == curitem) {
textView.setHeight(0);
}
else{
textView.setHeight(60);
}
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.navigation_item_layout, null);
}
TextView textview = (TextView) convertView.findViewById(R.id.navigation_item);
textview.setText(itemArr[position].toUpperCase());
textview.setTextColor(Color.RED);
return convertView;
}
}`
這是spinner項目的佈局文件navigation_tem_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigation_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="10dp" />
您可能無法在導航li中提供當前條目st,並將其顯示在getView()方法的自定義SpinnerAdapter中。
我剛剛寫了一篇完整的源代碼文章,但我的示例使用靜態類型數組 - 您可以將其更改爲使用自定義NavigationListItem類(或任何您想調用它)併爲每個活動構建一個動態列表,這不包括目前的一個。您需要小心,因爲微調將在開始時嘗試選擇第一個條目,但您可以在getView()中顯示您想要的內容,而不是使用position提供的條目。
dandar3.blogspot.com/2013/03/actionbarsherlock-custom-list-navigation.html
找到在這個問題[鏈接](http://stackoverflow.com/questions/11410028/android-custom-adapter-with-custom-spinner-drop-down-xml-layout部分溶液-giving錯誤) –