溫馨提示×

android 列表視圖如何實現多選

小樊
122
2024-11-27 05:04:43
欄目: 編程語言

在Android中,要實現ListView的多選功能,你可以使用ListView.MultiChoiceMode。以下是實現多選功能的步驟:

  1. 在布局文件中創建一個ListView,并設置其choiceMode屬性為MultiChoiceMode.MULTIPLEMultiChoiceMode.SINGLE。例如:
<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:choiceMode="multiple" />
  1. 創建一個自定義的ArrayAdapter,以便在列表項上顯示復選框。例如:
public class MultiChoiceArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final List<String> items;
    private final int resource;

    public MultiChoiceArrayAdapter(Context context, int resource, List<String> items) {
        super(context, resource, items);
        this.context = context;
        this.items = items;
        this.resource = resource;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;

        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(resource, parent, false);

            viewHolder = new ViewHolder();
            viewHolder.textView = convertView.findViewById(android.R.id.text1);
            viewHolder.checkbox = convertView.findViewById(android.R.id.checkbox);

            viewHolder.checkbox.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean isChecked = ((CheckBox) v).isChecked();
                    if (isChecked) {
                        getSelection().add(getItem(position));
                    } else {
                        getSelection().remove(getItem(position));
                    }
                }
            });

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.textView.setText(getItem(position));

        return convertView;
    }

    static class ViewHolder {
        TextView textView;
        CheckBox checkbox;
    }
}
  1. 在Activity中,初始化ListView和自定義的ArrayAdapter,并將它們設置給ListView。例如:
public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private MultiChoiceArrayAdapter adapter;
    private List<String> items;

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

        listView = findViewById(R.id.listView);

        items = new ArrayList<>();
        items.add("Item 1");
        items.add("Item 2");
        items.add("Item 3");
        items.add("Item 4");

        adapter = new MultiChoiceArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, items);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CheckBox checkBox = (CheckBox) view.findViewById(android.R.id.checkbox);
                if (checkBox.isChecked()) {
                    // 如果復選框已選中,將其添加到已選擇項目的列表中
                    getSelection().add(items.get(position));
                } else {
                    // 如果復選框未選中,將其從已選擇項目的列表中移除
                    getSelection().remove(items.get(position));
                }
            }
        });
    }
}

現在,你已經成功實現了ListView的多選功能。用戶可以按住Shift鍵或Ctrl鍵(或Cmd鍵,適用于Mac)并單擊其他列表項以選擇多個項目。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女