android怎么删除列表,在Android中删除列表视图(cab)中的多个选定项目

我想删除列表视图(Gmail样式)中的多个选定项目(行)。 如果我选择(使用longClick)一行,没有任何反应。 我在互联网上发现了这个代码,我试图将它插入到我的项目中。在Android中删除列表视图(cab)中的多个选定项目

MainActivity

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_lista, container,

false);

Lista = (ListView) rootView.findViewById(R.id.Lista);

items = new ArrayList();

items = GetLists.GetRecordList(rootView.getContext());

adapter = new ListaAdapter(rootView.getContext(),

R.layout.list_view_item, items);

Lista.setAdapter(adapter);

Lista.setMultiChoiceModeListener(this);

Lista.setChoiceMode(Lista.CHOICE_MODE_MULTIPLE_MODAL);

return rootView;

}

@Override

public boolean onActionItemClicked(ActionMode actionMode, MenuItem menu) {

switch (menu.getItemId()) {

case R.id.menu_delete:

SparseBooleanArray selected = adapter.getSelectedIds();

for (int i = (selected.size() - 1); i >= 0; i--) {

if (selected.valueAt(i)) {

ListViewItem selectedItem = adapter.getItem(selected

.keyAt(i));

adapter.remove(selectedItem);

}

}

actionMode.finish();

return true;

default:

return false;

}

}

@Override

public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {

actionMode.getMenuInflater().inflate(R.menu.delete_menu, menu);

return false;

}

@Override

public void onDestroyActionMode(ActionMode arg0) {

adapter.removeSelection();

}

@Override

public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {

return false;

}

@Override

public void onItemCheckedStateChanged(ActionMode actionMode, int position,

long arg2, boolean arg3) {

final int checkedOut = Lista.getCheckedItemCount();

actionMode.setTitle(checkedOut + " selezionato");

adapter.toggleSelection(position);

}

,这是适配器

public class ListaAdapter extends ArrayAdapter {

private Context context;

private ArrayList items;

private SparseBooleanArray mSelectedItemsIds;

public ListaAdapter(Context context, int resourceId,

ArrayList items) {

super(context, resourceId, items);

mSelectedItemsIds = new SparseBooleanArray();

this.context = context;

this.items = items;

}

private class ViewHolder {

ImageView imageView;

TextView txtTitle;

TextView txtSubTitle;

}

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

LayoutInflater mInflater = (LayoutInflater) context

.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

convertView = mInflater.inflate(R.layout.list_view_item, null);

holder = new ViewHolder();

holder.txtTitle = (TextView) convertView

.findViewById(R.id.TitoloPrincipale);

holder.txtSubTitle = (TextView) convertView

.findViewById(R.id.Sottotitolo);

holder.imageView = (ImageView) convertView.findViewById(R.id.Image);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

ListViewItem list = getItem(position);

holder.txtTitle.setText(list.getNomeFarmaco());

holder.txtSubTitle.setText(list.getFasceOrarie());

holder.imageView.setImageResource(list.getIcon());

// convertView

// .setBackgroundColor(mSelectedItemsIds.get(position)

// : Color.TRANSPARENT);

return convertView;

}

public void remove(ListViewItem item) {

items.remove(item);

notifyDataSetChanged();

}

public void toggleSelection(int position) {

selectView(position, !mSelectedItemsIds.get(position));

}

public void removeSelection() {

mSelectedItemsIds = new SparseBooleanArray();

notifyDataSetChanged();

}

public void selectView(int position, boolean value) {

if (value)

mSelectedItemsIds.put(position, value);

else

mSelectedItemsIds.delete(position);

notifyDataSetChanged();

}

public int getSelectedCount() {

return mSelectedItemsIds.size();

}

public SparseBooleanArray getSelectedIds() {

return mSelectedItemsIds;

}

你有什么想法? tks

2014-06-07

Anto

+0

被删除菜单显示,当你对一个项目长按?我要去睡觉了,快回答!也许我得到了你的问题 –

+0

我现在上床睡觉了,我找到了答案,请检查一下。 –

+0

没有。什么都没有“新菜单”,没有选定的原始背景 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值