在特定视图中使用上下文操作栏时,无法解析方法startActionMode()

安贾利

我一直在尝试在单击复选框时使用上下文操作栏以从listView中删除多行... listview在每一行中都有一个复选框和一个textview。在适配器类中,我按如下所示调用startActionMode():

**@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        View view=convertView;
        Log.v("ConvertView", String.valueOf(position));
        final ToPayModel state = toPayList.get(position);
        if (convertView == null)
        {
            inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.to_pay_item, null);
            holder = new ViewHolder();
            holder.name = (TextView) convertView.findViewById(R.id.tvToPay);
            holder.check = (CheckBox) convertView.findViewById(R.id.toPaycheck);
            convertView.setTag(holder);
            //holder.name.setOnCheckedChangeListener();
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.check.setOnClickListener( new View.OnClickListener()
        {
            public void onClick(View v)
            {
                CheckBox cb = (CheckBox) v;
                ToPayModel toPayModel = (ToPayModel) cb.getTag();
                Toast.makeText(context, "Clicked on Checkbox: " + cb.getText() + " is " + cb.isChecked(),
                        Toast.LENGTH_LONG).show();
                toPayModel.setCheck(cb.isChecked());
                if(state.isCheck()){
                    mActionMode=context.startActionMode(new ActionBarCallback());
                }
                else{
                    mActionMode.finish();
                }
            }
        });

        //holder.code.setText(" (" + state.getCode() + ")");
        holder.name.setText(state.getName());
        holder.check.setTextColor(Color.BLACK);
        holder.check.setChecked(state.isCheck());
        holder.check.setTag(state);
        return convertView;
    }
    public static final class ActionBarCallback implements ActionMode.Callback{
        public ActionBarCallback(){
        }
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.getMenuInflater().inflate(R.menu.contextual_menu,menu);
            return true;
        }
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            mode.setTitle("Checkbox Selected");
            return false;
        }
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch(item.getItemId()){
                case R.id.delete_item:
                   // removeSelection();
                    return true;
                default: return false;
            }
        }
        @Override
        public void onDestroyActionMode(ActionMode mode) {
             mode.finish();
        }
    }**

Adapter类扩展了BaseAdapter

public class ToPayListAdapter extends BaseAdapter {
    static Context context;
    LayoutInflater inflater;
    ActionMode mActionMode=null;
    public ArrayList<ToPayModel> toPayList;
    public ToPayListAdapter(Context context,ArrayList<ToPayModel> toPayList){

        this.context=context;
        this.toPayList=toPayList;


    }

但是问题是,当我调用startActionMode()时出现错误它说无法解决该方法。是因为我正在从getView方法中调用...我很无助...任何响应将不胜感激。先感谢您。

安东尼奥

该方法startActionMode已定义Activity但未定义Context(请参阅文档)。

在第一段代码中,如果要传递anActivity作为上下文,则可以将其强制转换Activity为以下形式:

mActionMode=((Activity)context).startActionMode(new ActionBarCallback());

或更改声明

Context context;

到:

Activity context;

从评论中编辑:

如果你开始了ActionMode.CallbackView.OnClickListener()一个Fragment,你可以检索的Activity这个片段正在使用相关getActivity()

YourFragmentClass.this.getActivity().startActionMode(...);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在片段中使用上下文时出错

来自分类Dev

在片段中使用上下文的最佳方法

来自分类Dev

使用上下文操作栏在操作栏中共享项目

来自分类Dev

如何在support.v7.widget.Toolbar和Listview中使用上下文操作栏(CAB)?

来自分类Dev

在AppCompatActivity中使用上下文

来自分类Dev

在AppCompatActivity中使用上下文

来自分类Dev

在片段中使用上下文

来自分类Dev

如何使用上下文对象在基于类的视图中进行查询?

来自分类Dev

使用上下文菜单删除自定义列表视图中的项目

来自分类Dev

使用AppCompat的上下文操作栏

来自分类Dev

使用AppCompat的上下文操作栏

来自分类Dev

错误 - 尝试在 RecyclerView 中使用 Glide 加载图像时“无法解析符号'上下文”

来自分类Dev

使用上下文API时如何在React JS中使用Match道具

来自分类Dev

使用上下文信息进行解析谓词

来自分类Dev

使用上下文信息进行解析谓词

来自分类Dev

Talend-无法在 oracle 查询中使用上下文变量

来自分类Dev

在Coq模式匹配中使用上下文信息

来自分类Dev

如何在函数中使用上下文?

来自分类Dev

在React中使用上下文API

来自分类Dev

在TypeScript中使用上下文API

来自分类Dev

在Coq模式匹配中使用上下文信息

来自分类Dev

如何在测试中使用上下文?

来自分类Dev

Mapstruct :在@Mapping 的源参数中使用上下文

来自分类Dev

在React中使用上下文在兄弟姐妹之间传递上下文

来自分类Dev

ASP.NET Identity的“创建模型时无法使用上下文”异常

来自分类Dev

储存库错误-创建模型时无法使用上下文

来自分类Dev

在Map-reduce Hadoop的Mapper类的run方法中使用上下文对象?

来自分类Dev

使用上下文菜单在自定义列表视图中突出显示所选项目?

来自分类Dev

即使使用上下文也无法引用findViewbyId()

Related 相关文章

  1. 1

    在片段中使用上下文时出错

  2. 2

    在片段中使用上下文的最佳方法

  3. 3

    使用上下文操作栏在操作栏中共享项目

  4. 4

    如何在support.v7.widget.Toolbar和Listview中使用上下文操作栏(CAB)?

  5. 5

    在AppCompatActivity中使用上下文

  6. 6

    在AppCompatActivity中使用上下文

  7. 7

    在片段中使用上下文

  8. 8

    如何使用上下文对象在基于类的视图中进行查询?

  9. 9

    使用上下文菜单删除自定义列表视图中的项目

  10. 10

    使用AppCompat的上下文操作栏

  11. 11

    使用AppCompat的上下文操作栏

  12. 12

    错误 - 尝试在 RecyclerView 中使用 Glide 加载图像时“无法解析符号'上下文”

  13. 13

    使用上下文API时如何在React JS中使用Match道具

  14. 14

    使用上下文信息进行解析谓词

  15. 15

    使用上下文信息进行解析谓词

  16. 16

    Talend-无法在 oracle 查询中使用上下文变量

  17. 17

    在Coq模式匹配中使用上下文信息

  18. 18

    如何在函数中使用上下文?

  19. 19

    在React中使用上下文API

  20. 20

    在TypeScript中使用上下文API

  21. 21

    在Coq模式匹配中使用上下文信息

  22. 22

    如何在测试中使用上下文?

  23. 23

    Mapstruct :在@Mapping 的源参数中使用上下文

  24. 24

    在React中使用上下文在兄弟姐妹之间传递上下文

  25. 25

    ASP.NET Identity的“创建模型时无法使用上下文”异常

  26. 26

    储存库错误-创建模型时无法使用上下文

  27. 27

    在Map-reduce Hadoop的Mapper类的run方法中使用上下文对象?

  28. 28

    使用上下文菜单在自定义列表视图中突出显示所选项目?

  29. 29

    即使使用上下文也无法引用findViewbyId()

热门标签

归档