daimajia / AndroidSwipeLayout

The Most Powerful Swipe Layout!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SwipeLayout not closing correctly

RGregat opened this issue · comments

Hi, first thing thanks for this great library. But I have one interesting problem.

I have currently two items in my ListView
01

If I open on the first Item the underlying layout and press the delete button, I remove one Item of my datamodel and invalidate the adapter.

02

The interesting is, the remaining item has now the opened status

03

If I delete also the last item and reopen everything with fresh data, the first item is still opened.

04

Code Snipped of the ListViewAdapter which extends from the BaseSwipeAdapter:

`
@OverRide
public View generateView(int position, ViewGroup parent) {
Log.d("ListViewAdapter", "generateView position: " + position);
holder = new ViewHolder();

    View v = LayoutInflater.from(mContext).inflate(R.layout.settings_delete_project_item, null);

    holder.swipeLayout = (SwipeLayout)v.findViewById(getSwipeLayoutResourceId(position));
    holder.delete = (Button) v.findViewById(R.id.delete);
    holder.t_position = (TextView) v.findViewById(R.id.position);
    holder.t_data = (TextView) v.findViewById(R.id.text_data);
    v.setTag(holder);

    return v;
}

@Override
public void fillValues(int position, View convertView) {
    Log.d("ListViewAdapter", "fillValues position: " + position);
    holder = (ViewHolder) convertView.getTag();
    holder.delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("ListViewAdapter", "holder.delete position: " + position);
            holder.swipeLayout.close(true);

            mDeletionInterface.deleteProject(projekte.get(position).getId());

            projekte.remove(position);

            notifyDataSetChanged();
        }
    });

    holder.swipeLayout.addSwipeListener(new SimpleSwipeListener() {
        @Override
        public void onOpen(SwipeLayout layout) {

        }
    });
    holder.t_position.setText((position + 1) + ".");
    holder.t_data.setText(projekte.get(position).print());
}`

Well I think I don't handle the Views in a proper way, maybe someone of you can help me with this problem.

Ok I think I found a way to solve this issue

@Override
            public void onClick(View view) {
                Log.d("ListViewAdapter", "holder.delete position: " + position);
                mItemManger.removeShownLayouts(holder.swipeLayout);

                mDeletionInterface.deleteProject(position);//projekte.get(position).getId()

                mItemManger.closeAllItems();
            }