1

非常に奇妙な問題のようですが、アイテムをチェック済みとしてマークすると、リストビューの順序が逆になります

listview.setItemChecked()

同じことに関連する開発者向けドキュメントにはドキュメントがありません。助けていただければ幸いです。

チェック項目部分のコードはこちら

CheckBox box = (CheckBox) convertView.findViewById(R.id.select);
box.setOnClickListener(new OnClickListener() {
    public void onClick(View view) {
        CheckBox checkBox = (CheckBox) view;
        list.setItemChecked(position + list.getHeaderViewsCount(), checkBox.isChecked());

        final long[] checkedItemIds = list.getCheckedItemIds();
        Log.d(Constants.TAG,
                "HomeActivity.onCreate(...).new EMListAdapter() {...}.getView(...).new OnClickListener() {...}.onClick: " + Arrays.toString(checkedItemIds));
        if (checkedItemIds.length > 0) {
            if (mMode == null) {
                mMode = startActionMode(new EashmartActionBar(HomeActivity.this) {
                    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                        menu.add(R.string.delete).setIcon(R.drawable.bin).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
                        return true;
                    }

                    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                        switch (item.getItemId()) {
                        case 0:
                            Log.d(Constants.TAG,
                                    "HomeActivity.onCreate(...).new EMListAdapter() {...}.getView(...).new OnClickListener() {...}.onClick(...).new EashmartActionBar() {...}.onActionItemClicked: "
                                            + Arrays.toString(checkedItemIds));
                            invoiceManager.delete(checkedItemIds);
                            break;
                        }
                        mode.finish();
                        mMode = null;
                        return true;
                    }

                    public void onDestroyActionMode(ActionMode mode) {
                        for (int i = 0; i < list.getCount(); i++) {
                            list.setItemChecked(i, false);
                        }
                        mMode = null;
                    }
                });
            }
        } else {
            if (mMode != null) {
                mMode.finish();
                mMode = null;
            }
        }
    }
});

この問題は 2.3 でのみ発生しており、4.0 では発生していないようです

4

1 に答える 1

0

リストから要素を直接削除しないでください。
まず、ArrayAdapter の ArrayList から要素を削除します。
新しい ArrayList 値でリストビューを再作成/更新するよりも。

于 2012-10-22T05:50:22.500 に答える