亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

鹤壁市| 左权县| 平乐县| 惠水县| 自贡市| 西华县| 西丰县| 那曲县| 秦皇岛市| 海兴县| 海丰县| 灵丘县| 武鸣县| 太和县| 谢通门县| 长治市| 灵宝市| 富顺县| 岚皋县| 晋州市| 阜平县| 宝坻区| 敖汉旗| 石河子市| 新绛县| 河东区| 司法| 庆元县| 泰来县| 博乐市| 富顺县| 新乡县| 于田县| 平顶山市| 扎赉特旗| 庆阳市| 四会市| 博野县| 临湘市| 保德县| 莱州市|