更改所选ListView项目的图像

时间:2017-10-04 17:51:52

标签: android listview

我使用下面的方法选择列表中的多个项目并删除它们。我想更改我选择的项目的图标图像,但是我没有找到我能做到的时间,有人可以帮助我吗?

listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listview.setMultiChoiceModeListener(new MultiChoiceModeListener() {

        @Override
        public void onItemCheckedStateChanged(ActionMode actionMode, int position, long id, boolean checked) {
            final int checkedCount = listview.getCheckedItemCount();
            actionMode.setTitle(checkedCount + getString(R.string.selected_item_list));
            adapter.toggleSelection(position);
        }

        @Override
        public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
            switch (menuItem.getItemId()) {
                case R.id.delete:
                    SparseBooleanArray selected = adapter.getSelectedIds();
                    for (int i = (selected.size() - 1); i < 0; i--) {
                        if (selected.valueAt(i)) {
                            Object object = adapter
                                    .getItem(selected.keyAt(i));
                            adapter.remove(delivery);
                        }
                    }
                    actionMode.finish();
                    return true;
                default:
                    return false;
            }
        }

        @Override
        public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
            MenuInflater inflater = actionMode.getMenuInflater();
            inflater.inflate(R.menu.menu_home_delete, menu);
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode actionMode) {
            adapter.removeSelection();
        }

        @Override
        public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
            return false;
        }
    });

1 个答案:

答案 0 :(得分:0)

向适配器中的数据对象添加布尔值。假设你有ArrayAdapter。在MyDataObject中添加某种“选定”字段,并在“选择”该行时切换它。

在适配器中覆盖getView(你需要一个自定义适配器,顺便说一下。我只是扩展了ArrayAdapter)。渲染行时,如果“selected”字段为true,则显示“other”图像。

单击该按钮时,请在适配器上调用“notifyDataSetChanged”。这将导致可见行自行刷新(并为每个行调用getView)。

由于您只想在单击按钮时更改图像,因此您需要具有某种全局布尔值,因此在单击按钮之前,getView将不会显示图像。