简体   繁体   English

如何从列表适配器显示上下文操作栏?

[英]How Do i Show Contextual Action Bar from List Adapter?

I'm a noob to android development and I am trying to display a CAB from a List_Adapter when a user clicks a button on a listview item. 我是android开发的List_Adapter当用户单击listview项上的按钮时,我试图从List_Adapter显示CAB。 I'm following the ActionbarSherlock sample but am not able to figure why I am getting the error "The method startActionMode(Child_Locations_ListAdapeter.AnActionModeOfEpicProportions) is undefined for the type Child_Locations_ListAdapeter ". 我正在跟踪ActionbarSherlock示例,但无法弄清楚为什么会收到错误“对于类型Child_Locations_ListAdapeter未定义方法startActionMode(Child_Locations_ListAdapeter.AnActionModeOfEpicProportions) ”。 Any help is greatly appreciated. 任何帮助是极大的赞赏。

CODE

public class Child_Locations_ListAdapeter extends BaseAdapter implements OnClickListener {

private ArrayList<HashMap<String, String>> listData;

private LayoutInflater layoutInflater;

Context c;
int selection;
ActionMode mMode;

public Child_Locations_ListAdapeter(Context context, ArrayList listData) {
    this.listData = listData;
    layoutInflater = LayoutInflater.from(context);
    c= context;
}

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

public void insert(int position, String item, String item2 ) {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("Location",item );
    map.put("Location_Address",item2 );
    listData.add(position, map);
    notifyDataSetChanged();
}

@Override
public int getCount() {
    return listData.size();
}

@Override
public Object getItem(int position) {
    return listData.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}


public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = layoutInflater.inflate(R.layout.layout_row_locations, null);
        holder = new ViewHolder();
        //holder.userAvatar = (ImageView) convertView.findViewById(R.id.client_image);
        holder.locationName = (TextView) convertView.findViewById(R.id.tv_locationname);
        holder.locationAddress = (TextView) convertView.findViewById(R.id.tv_locationaddress);
        holder.delete = (ImageButton) convertView.findViewById(R.id.action_delete);
        holder.delete.setOnClickListener(Child_Locations_ListAdapeter.this);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.delete.setTag(position);

    //holder.userAvatar.setText(((Comment_Item) listData.get(position)).getUserName());
    try{
        holder.locationName.setText((listData.get(position)).get("Location"));
        holder.locationAddress.setText((listData.get(position)).get("Location_Address"));
    }catch(Exception e){
        e.printStackTrace();
        //holder.locationName.setText("No Locations For This Child");
        //holder.locationAddress.setText("");
    }
    //Geocoder_Class geocoder = new Geocoder_Class(c);
    //holder.locationAddress.setText(geocoder.getAddress((listData.get(position)).get("Latitude"), (listData.get(position)).get("Longitude")));

    return convertView;
}

static class ViewHolder {
    ImageView location_picture;
    TextView locationName;
    TextView locationAddress;
    ImageButton delete;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {

    case R.id.action_delete:

        selection = (Integer)v.getTag();
        Log.e("Selection", String.valueOf(selection));

        mMode = startActionMode(new AnActionModeOfEpicProportions());//<--The method startActionMode(Child_Locations_ListAdapeter.AnActionModeOfEpicProportions) is undefined for the type Child_Locations_ListAdapeter
    }
}


public class AnActionModeOfEpicProportions implements ActionMode.Callback {
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        //Used to put dark icons on light action bar
        //boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light;

        menu.add("Save")
            .setIcon( R.drawable.ic_compose)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        menu.add("Search")
            .setIcon( R.drawable.ic_search)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        menu.add("Refresh")
            .setIcon(R.drawable.ic_refresh)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        menu.add("Save")
            .setIcon(R.drawable.ic_compose)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        menu.add("Search")
            .setIcon(R.drawable.ic_search)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        menu.add("Refresh")
            .setIcon( R.drawable.ic_refresh)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        return true;
    }

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

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        Toast.makeText(c, "Got click: " + item, Toast.LENGTH_SHORT).show();
        mode.finish();
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
    }


}

}

The method startActionMode is bound to an Activity, not to a ListAdapter 方法startActionMode绑定到Activity,而不是ListAdapter

http://developer.android.com/reference/android/app/Activity.html#startActionMode(android.view.ActionMode.Callback) http://developer.android.com/reference/android/app/Activity.html#startActionMode(android.view.ActionMode.Callback)

((Activity) c).startActionMode(new AnActionModeOfEpicProportions());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 带适配器的上下文操作栏 - Contextual action bar with Adapter 适配器中的Android上下文操作栏? - Android Contextual Action bar in adapter? 如何删除上下文操作栏(CAB)中的默认项目? - How do I delete a default item in the contextual action bar (CAB)? 如何在上下文操作栏中创建“搜索”字段? - How do I create a “Search” field in a contextual action bar? 我们如何在Android上下文操作栏中显示后退按钮而不是完成(选中标记)按钮 - How do we show a back button instead of done(checkmark) button in the contextual action bar on Android 如何在Contextual Action Bar / ActionMode中显示文本和图标? - How to show text together with an icon in Contextual Action Bar / ActionMode? 如何使用上下文操作栏来处理汉堡包图标和插入符号图标? - How do I handle the hamburger-icon and up-caret-icon with a contextual action bar? 在上下文操作栏中,如何通过使选项卡不可单击/可滑动来禁用滑动选项卡? - How do I disable sliding tabs when in contextual action bar, by making the tabs not clickable/swipeable? 如何为ListFragment正确启动多选上下文操作栏(有问题) - How do I properly initiate a multi-select Contextual Action Bar for ListFragment (having issues) 如何更改上下文操作栏的文本颜色? Android的 - How do you change the text color of the contextual Action Bar? Android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM