在多選項(xiàng)視圖中顯示選中狀態(tài)指示器,可以通過以下幾個(gè)步驟實(shí)現(xiàn):
首先,為每個(gè)選項(xiàng)創(chuàng)建一個(gè)布局文件。這個(gè)布局文件應(yīng)該包含一個(gè)可以顯示選項(xiàng)內(nèi)容的視圖(例如 TextView)和一個(gè)表示選中狀態(tài)的指示器視圖(例如 ImageView 或者 CheckBox)。
在布局文件中,為指示器視圖設(shè)置一個(gè)標(biāo)識(shí)符,以便在代碼中引用。例如,給 ImageView 設(shè)置 android:id=“@+id/selected_indicator”。
在適配器(Adapter)的 getView()
方法或者 onCreateViewHolder()
方法中(取決于你使用的是 ListView 還是 RecyclerView),根據(jù)選項(xiàng)的選中狀態(tài)來更新指示器視圖。你需要維護(hù)一個(gè)數(shù)據(jù)結(jié)構(gòu)(例如 ArrayList 或者 HashSet)來存儲(chǔ)已選中的選項(xiàng)。
當(dāng)用戶點(diǎn)擊某個(gè)選項(xiàng)時(shí),切換該選項(xiàng)的選中狀態(tài)并更新指示器視圖。這可以通過在適配器中設(shè)置一個(gè) OnClickListener 來實(shí)現(xiàn)。在 OnClickListener 的回調(diào)方法中,首先獲取被點(diǎn)擊選項(xiàng)的位置,然后根據(jù)當(dāng)前選中狀態(tài)更新數(shù)據(jù)結(jié)構(gòu),最后調(diào)用 notifyDataSetChanged()
方法來更新界面。
在適配器的 getView()
方法或者 onBindViewHolder()
方法中,根據(jù)數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的選中狀態(tài)來更新指示器視圖。例如,如果選項(xiàng)被選中,則顯示選中指示器;否則,則隱藏選中指示器。
下面是一個(gè)簡(jiǎn)單的示例代碼:
public class MultipleChoiceAdapter extends ArrayAdapter<String> {
private List<String> options;
private Set<Integer> selectedPositions = new HashSet<>();
public MultipleChoiceAdapter(@NonNull Context context, int resource, @NonNull List<String> objects) {
super(context, resource, objects);
this.options = objects;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.multiple_choice_item, parent, false);
}
TextView optionText = convertView.findViewById(R.id.option_text);
ImageView selectedIndicator = convertView.findViewById(R.id.selected_indicator);
optionText.setText(options.get(position));
selectedIndicator.setVisibility(selectedPositions.contains(position) ? View.VISIBLE : View.GONE);
convertView.setOnClickListener(v -> {
if (selectedPositions.contains(position)) {
selectedPositions.remove(position);
} else {
selectedPositions.add(position);
}
notifyDataSetChanged();
});
return convertView;
}
}
這個(gè)示例代碼創(chuàng)建了一個(gè)簡(jiǎn)單的多選項(xiàng)視圖適配器,其中每個(gè)選項(xiàng)都有一個(gè)文本和一個(gè)選中狀態(tài)指示器。當(dāng)用戶點(diǎn)擊某個(gè)選項(xiàng)時(shí),該選項(xiàng)的選中狀態(tài)會(huì)被切換,并且指示器視圖會(huì)相應(yīng)地顯示或隱藏。