android - 滑动以从列表视图中删除项目
问题描述
在我的应用程序中,我需要实现滑动以从列表视图中删除项目。为此,我尝试使用 SwipeMenuListView。但这对我不起作用。这是我的代码。我有一个书签适配器:
public class BookmarkAdapter extends BaseAdapter {
private ListItemListener listener;
Context mContext;
ArrayList<String> mSource;
public BookmarkAdapter(Context context, ArrayList<String> source) {
this.mSource = source;
this.mContext = context;
}
@Override
public int getCount() {
return mSource.size();
}
@Override
public Object getItem(int position) {
return mSource.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.bookmark_layout_item, parent, false);
viewHolder.textView = (TextView)convertView.findViewById(R.id.tvWord);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.textView.setText(mSource.get(position));
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null)
listener.onItemClick(position);
}
});
return convertView;
}
public void clear() {
mSource.clear();
}
class ViewHolder {
TextView textView;
}
}
在 BookmarkFragment 类上,我尝试实现滑动列表视图。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setHasOptionsMenu(true);
SwipeMenuListView bookmarkList = (SwipeMenuListView) view.findViewById(R.id.bookmarkList);
adapter = new BookmarkAdapter(getActivity(), mDBHelper.getAllWordFromBookmark());
bookmarkList.setAdapter(adapter);
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem openItem = new SwipeMenuItem(
MainActivity.getContext());
openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE)));
openItem.setWidth(170);
openItem.setTitle("Open");
openItem.setTitleSize(18);
openItem.setTitleColor(Color.WHITE);
menu.addMenuItem(openItem);
SwipeMenuItem deleteItem = new SwipeMenuItem(
MainActivity.getContext());
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25)));
deleteItem.setWidth(170);
deleteItem.setIcon(R.drawable.ic_delete);
menu.addMenuItem(deleteItem);
}
};
bookmarkList.setMenuCreator(creator);
bookmarkList.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
switch (index) {
case 0:
Log.d(TAG, "onMenuItemClick: clicked item " + index);
break;
case 1:
Log.d(TAG, "onMenuItemClick: clicked item " + index);
break;
}
return false;
}
});
bookmarkList.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);
bookmarkList.setOnMenuStateChangeListener(new SwipeMenuListView.OnMenuStateChangeListener() {
@Override
public void onMenuOpen(int position) {
}
@Override
public void onMenuClose(int position) {
}
});
bookmarkList.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
@Override
public void onSwipeStart(int position) {
}
@Override
public void onSwipeEnd(int position) {
}
});
但这对我不起作用。请帮助我,我该如何解决这个问题。
解决方案
推荐阅读
- java - 大型json(objs数组)Java InputStream的流式反序列化
- websphere - 在 Websphere 中使用容器管理的身份验证别名访问 JNDI 数据源(Spring + Ibatis/Mybatis)
- android-studio - 关闭时在 Android 中禁用“同步设置”
- mysql - 在大数据集 MySQL 中执行 Groupby
- mysql - Access 或 Mysql - 表行作为查询中的列
- liquid - 如何解析液体模板中 json 对象的 json 字符串值?
- redis - redis可以覆盖Java使用的直接内存吗?
- html - 如何给 Bootstrap col 动态高度?
- sql - BigQuery:如何删除具有相同数据的 2 列的行?
- sql - 按 LEFT(code, 4) 分组并选择其中一个描述为 1