簡體   English   中英

使用上下文操作欄獲取每個選定項目的價值

[英]Getting value of each selected item using a contextual action bar

我使用的是上下文操作欄,希望在單擊“郵件”按鈕后檢索選擇的每個傳遞給另一個活動的值。 我該怎么做?

CAB的代碼。

mAdapter = new SelectionAdapter(this, R.layout.activity_result, R.id.name, new String[] {TAG_NAME, TAG_ROOM_PRICE});
    setListAdapter(mAdapter);
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    getListView().setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {

        private int nr = 0;
        @Override
        public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
            nr = 0;
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.contextual_menu, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case R.id.email:


            }
            return false;
        }

        @Override
        public void onDestroyActionMode(android.view.ActionMode mode) {
            mAdapter.clearSelection();
        }

        @Override
        public void onItemCheckedStateChanged(android.view.ActionMode mode, int position, long id, boolean checked) {
            if (checked) {
                nr++;
                mAdapter.setNewSelection(position, checked);
            } else {
                nr--;
                mAdapter.removeSelection(position);
            }
            mode.setTitle("No: of resorts selected: " + nr);
        }
    });
    lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            //String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
            getListView().setItemChecked(position, !mAdapter.isPositionChecked(position));
            return true;
        }
    });

選擇適配器類,用於定義對象mAdapter

private class SelectionAdapter extends ArrayAdapter<String> {

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

    public SelectionAdapter(Context context, int resource, int textViewResourceId, String[] objects) {
        super(context, resource, textViewResourceId, objects);
    }

    public void setNewSelection(int position, boolean value) {
        mSelection.put(position, value);
        notifyDataSetChanged();
    }

    public boolean isPositionChecked(int position) {
        Boolean result = mSelection.get(position);
        return result == null ? false : result;
    }

    public Set<Integer> getCurrentCheckedPosition() {
        return mSelection.keySet();
    }

    public void removeSelection(int position) {
        mSelection.remove(position);
        notifyDataSetChanged();
    }

    public void clearSelection() {
        mSelection = new HashMap<Integer, Boolean>();
        notifyDataSetChanged();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);//let the adapter handle setting up the row views
        v.setBackgroundColor(getResources().getColor(android.R.color.background_light)); //default color

        if (mSelection.get(position) != null) {
            v.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));// this is a selected position so make it red
        }
        return v;
    }
}

我希望檢索我所做的每個選擇的字符串值

我找到了解決方案。

mAdapter.setNewSelection(position, checked);
                String get_list = resortsList.get(position).get(TAG_NAME);
                stringList.add(get_list);

並取消選中時刪除選中的項目:

for(i = 0 ; i < stringList.size(); i++){
     if(stringList.get(i).equals(resortsList.get(position).get(TAG_NAME))){
          stringList.remove(i);
          Log.d("String List: ", stringList.toString());
          break;
          }
 }`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM