首页 > 解决方案 > 滑动以从列表视图中删除项目

问题描述

在我的应用程序中,我需要实现滑动以从列表视图中删除项目。为此,我尝试使用 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) {

            }
        });

但这对我不起作用。请帮助我,我该如何解决这个问题。

标签: androidlistview

解决方案


推荐阅读