ListView中的上下文操作会在每次单击时强制使用适配器getView

时间:2013-02-01 13:00:55

标签: android android-listview android-adapter

我有一个ListFragment(出于兼容性原因,我使用android.support.v4.app.ListFragment)并且想要使用上下文操作模式。

因此我编码:

public class CustomListFragment extends ListFragment {
...
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        setListAdapter(new CustomListAdapter(getActivity().getApplicationContext(), TYPE));

        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
             registerForContextMenu(getListView());
        } else {
            getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
            getListView().setMultiChoiceModeListener(new CustomMultiSpamItemChoiceModeListener());          
        }
   }
...
}


class CustomMultiSpamItemChoiceModeListener implements MultiChoiceModeListener{
    @Override
    public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
        return false;
    }
    @Override
    public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
        return false;
    }
    @Override
    public void onDestroyActionMode(ActionMode arg0) {
    }
    @Override
    public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
        return false;
    }
    @Override
    public void onItemCheckedStateChanged(ActionMode arg0, int arg1,
            long arg2, boolean arg3) {
    }
}


public class CustomListAdapter extends BaseAdapter{
...
    @Override
    public View getView(int pos, View view, ViewGroup vg) {
    ...
    }
}

问题在于,只要我将 setChoiceMode 设置为 ListView.CHOICE_MODE_MULTIPLE_MODAL ,就可以使用适配器方法 getView(int pos, View view, ViewGroup vg) < /强> 在ListView的项目上每次点击(短按点击)都会被调用。甚至没有激活上下文动作模式。

这在一个持久的项目压制动画中变得明显。 通常情况下,按下的项目的蓝色指示灯持续几毫秒,但在我的情况下大约一秒钟,因为它需要一些时间来收集创建ListItems所需的所有信息。

此行为是否符合预期? 我认为 ListView.CHOICE_MODE_MULTIPLE_MODAL 标记不需要再次“重新启动”整个ListItems

0 个答案:

没有答案