android-simple-facebook icon indicating copy to clipboard operation
android-simple-facebook copied to clipboard

calling getCursor() resulting in item click execute multiple times automatically

Open azizimusa opened this issue 9 years ago • 1 comments

When I'm on page 1, the click execute 1 time, when on page 2, i click once, and then it auto execute 2 times. Why this is happening ?

see line of these :

Log.i("groupName", groupName); < == it will be printed multiple times

void updateRecyclerView(final List<com.sromku.simple.fb.entities.Group> accounts) {

        mAdapter = new GroupAdapter(accounts);
        mRecyclerView.setAdapter(mAdapter);
        mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {

                rowName = (TextView) view.findViewById(R.id.rowName);
                String groupName = (String) rowName.getText();

                // groupName will printed * pageNumber = times
                // if on page 3, it will printed 3 times.
                Log.i("groupName", groupName);
            }

            @Override
            public void onItemLongClick(View view, int position) {}
        }));
    }

    OnGroupsListener onGroupsListener = new OnGroupsListener() {
        @Override
        public void onComplete(List<com.sromku.simple.fb.entities.Group> groups) {
            updateRecyclerView(groups);

            if (hasNext()) {
                enableLoadMore(getCursor());
                next.setBootstrapButtonEnabled(true);
            } else {
                next.setBootstrapButtonEnabled(false);
            }

            if (hasPrev()) {
                prev.setBootstrapButtonEnabled(true);
            } else {
                prev.setBootstrapButtonEnabled(false);
            }
        }
    };

    private void enableLoadMore(final Cursor<List<com.sromku.simple.fb.entities.Group>> cursor) {

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (cursor.hasNext()) {
                    cursor.next();
                }
            }
        });

        prev.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (cursor.hasPrev()) {
                    cursor.prev();
                }
            }
        });
    }

azizimusa avatar Aug 07 '15 10:08 azizimusa

Solved. Problem occured when

mRecyclerView.addOnItemTouchListener

is declared multiple times. So instead being inside the method, I move it into onCreateView instead

azizimusa avatar Aug 07 '15 16:08 azizimusa