中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spinner實現選項的分組折疊與展開

發布時間:2024-08-16 18:17:38 來源:億速云 閱讀:82 作者:小樊 欄目:移動開發

要實現Spinner選項的分組折疊與展開,可以通過自定義Spinner的適配器(Adapter)來實現。以下是一個簡單的示例:

  1. 首先創建一個自定義的數據模型類,用來表示Spinner的選項分組和選項內容:
public class GroupItem {
    private String groupName;
    private List<String> childItems;

    public GroupItem(String groupName, List<String> childItems) {
        this.groupName = groupName;
        this.childItems = childItems;
    }

    public String getGroupName() {
        return groupName;
    }

    public List<String> getChildItems() {
        return childItems;
    }
}
  1. 創建一個自定義的Spinner適配器,實現選項的分組折疊與展開邏輯:
public class CustomSpinnerAdapter extends BaseAdapter {
    private List<GroupItem> groupItems;
    private Context context;

    public CustomSpinnerAdapter(Context context, List<GroupItem> groupItems) {
        this.context = context;
        this.groupItems = groupItems;
    }

    @Override
    public int getCount() {
        int count = 0;
        for (GroupItem groupItem : groupItems) {
            count += groupItem.getChildItems().size() + 1; // 計算每個分組下的選項數量,并加上分組頭部
        }
        return count;
    }

    @Override
    public Object getItem(int position) {
        int count = 0;
        for (GroupItem groupItem : groupItems) {
            int groupSize = groupItem.getChildItems().size() + 1;
            if (position < count + groupSize) {
                if (position == count) {
                    return groupItem.getGroupName(); // 返回分組頭部
                } else {
                    return groupItem.getChildItems().get(position - count - 1); // 返回選項內容
                }
            }
            count += groupSize;
        }
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView textView = new TextView(context);
        textView.setPadding(20, 10, 20, 10);

        Object item = getItem(position);
        if (item instanceof String) {
            // 顯示選項內容
            textView.setText((String) item);
        } else if (item instanceof String) {
            // 顯示分組頭部
            textView.setText((String) item);
            textView.setBackgroundColor(Color.GRAY);
        }

        return textView;
    }
}
  1. 在Activity中設置Spinner的適配器并處理選項的分組折疊與展開邏輯:
public class MainActivity extends AppCompatActivity {
    private Spinner spinner;
    private List<GroupItem> groupItems;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner = findViewById(R.id.spinner);
        initData();

        CustomSpinnerAdapter adapter = new CustomSpinnerAdapter(this, groupItems);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Object item = adapter.getItem(position);
                if (item instanceof String) {
                    // 處理選項點擊事件
                    String selectedItem = (String) item;
                    Toast.makeText(MainActivity.this, selectedItem, Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }

    private void initData() {
        groupItems = new ArrayList<>();
        List<String> group1Items = new ArrayList<>();
        group1Items.add("Option 1");
        group1Items.add("Option 2");
        groupItems.add(new GroupItem("Group 1", group1Items));

        List<String> group2Items = new ArrayList<>();
        group2Items.add("Option 3");
        group2Items.add("Option 4");
        groupItems.add(new GroupItem("Group 2", group2Items));
    }
}

通過以上步驟,可以實現Spinner選項的分組折疊與展開功能。在自定義的適配器中,根據位置判斷是分組頭部還是選項內容,并在getView方法中設置不同的UI樣式。在Activity中根據選中的位置處理相應的邏輯。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

唐海县| 永仁县| 海南省| 于田县| 健康| 织金县| 长汀县| 神池县| 新竹县| 安仁县| 吴忠市| 九江市| 布拖县| 唐山市| 大连市| 即墨市| 安岳县| 扎囊县| 乐亭县| 新源县| 肥乡县| 赤城县| 凉城县| 锡林浩特市| 雷州市| 天门市| 邵东县| 上高县| 三门县| 山东| 潼南县| 商水县| 翁牛特旗| 独山县| 淮北市| 宣化县| 柳江县| 东乌珠穆沁旗| 吉林市| 宜都市| 澎湖县|