0

我有一个要求,当我输入邮政编码并在模拟器/平板电脑上按 Enter 键时,我会在 ListView 中获取操作员姓名列表。在 Listview 中,我使用 checkedtextview 来使用我的自定义数组适配器填充数据。

列表视图应一次只检查一个操作员姓名。每当数据填充到列表视图时,默认情况下应检查第一个操作员名称。

有什么办法可以找出解决办法。

我正在使用这样的自定义数组适配器

private class OperatorListAdapter extends ArrayAdapter<String> {

    private HashMap<Integer, Boolean> selectOperatorStatusMap = new HashMap<Integer, Boolean>();

    public OperatorListAdapter(Context context, int resource, List<String> objects) {
        super(context, resource, objects);

        selectOperatorStatusMap.put(0, true);
        for (int i = 1; i < objects.size(); i++) {
        selectOperatorStatusMap.put(i, false);
        }
    }

    public void toggleChecked(int position) {
        if (selectOperatorStatusMap.get(position)) {
            selectOperatorStatusMap.put(position, false);
        } else {
            selectOperatorStatusMap.put(position, true);
        }

        notifyDataSetChanged();
    }

    public void unChecked(int position) {
        for (int i = 0; i < selectOperatorStatusMap.size(); i++) {
            if(i!=position){
                checkedTextView.setChecked(false);
                checkedTextView.setCheckMarkDrawable(R.drawable.uncheck);
            }
        }
    }

    public List<Integer> getCheckedItemPositions() {
        List<Integer> checkedItemPositions = new ArrayList<Integer>();

        for (int i = 0; i < selectOperatorStatusMap.size(); i++) {
            if (selectOperatorStatusMap.get(i)) {
                (checkedItemPositions).add(i);
            }
        }

        return checkedItemPositions;
    }

    public List<String> getCheckedItems() {
        List<String> checkedItems = new ArrayList<String>();

        for (int i = 0; i < selectOperatorStatusMap.size(); i++) {
            if (selectOperatorStatusMap.get(i)) {
                (checkedItems).add(operatorList.get(i));
            }
        }

        return checkedItems;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;

        if (row == null) {
            LayoutInflater inflater = getActivity().getLayoutInflater();
            row = inflater.inflate(R.layout.provider_list, parent, false);
        }

        checkedTextView = (CheckedTextView) row.findViewById(R.id.list_text);
        checkedTextView.setText(operatorList.get(0));
        Log.i(TAG, "OperatorListAdapter:"+operatorList.get(0));
        Boolean checked = selectOperatorStatusMap.get(position);

        if (checked != null) {
            checkedTextView.setChecked(true);
        }

        return row;
    }
}
4

1 回答 1

0

是的。在getView而不是

if (checked != null) {
   checkedTextView.setChecked(true);
}

利用:

if (position == 0) {
    checkedTextView.setChecked(true);
}
else{
    checkedTextView.setChecked(false)
}
于 2013-07-19T09:47:53.323 回答