Skip to content
This repository has been archived by the owner on Feb 27, 2022. It is now read-only.

wrong section TAG value #37

Closed
heshesh2010 opened this issue May 1, 2017 · 2 comments
Closed

wrong section TAG value #37

heshesh2010 opened this issue May 1, 2017 · 2 comments
Labels

Comments

@heshesh2010
Copy link

heshesh2010 commented May 1, 2017

Hi there ,

I'm try to remove some rows from section one and some from section two , but

                            sectionAdapter.notifyItemRemovedFromSection(TAG, key);

TAG always return the section list string title , but i was selected row in first list

here is full class code 👍

  class ContactsSection extends StatelessSection {

    final String TAG;
    String title;
    List<Item> list;
    ItemViewHolder row;
    HeaderViewHolder MainRow;

    ContactsSection(String title, ArrayList<Item> list) {
        super(R.layout.shopping_row_item_header, R.layout.shopping_row_item);
        this.title = title;
        this.list = list;
        this.TAG = title;
    }

    @Override
    public int getContentItemsTotal() {
        return list.size();
    }

    @Override
    public RecyclerView.ViewHolder getItemViewHolder(View view) {
        return new ItemViewHolder(view);
    }

    @Override
    public void onBindItemViewHolder(final RecyclerView.ViewHolder holder, final int position) {

        final ItemViewHolder itemHolder = (ItemViewHolder) holder;
        final Item name = list.get(position);
        itemHolder.tvItem.setText(name.name);
        ((ItemViewHolder) holder).IntegBOX.setChecked(name.checked);
        ((ItemViewHolder) holder).IntegBOX.setTag(position);


        deleteAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

                Iterator it = selectedCheckBox.entrySet().iterator();
                if (!it.hasNext()) {

                    new makeDialog().makeDialog(mActivity, mActivity.getResources().getString(R.string.share_no_data));

                } else {

          
                    while (it.hasNext()) {
                        Map.Entry pair = (Map.Entry) it.next();
                        int key = (Integer) pair.getKey();
                        if ((Boolean) pair.getValue()) {
                            list.remove(key);

 // problem Here 
                            sectionAdapter.notifyItemRemovedFromSection(TAG, key);               

 }
             

                    }

                    chooseAllradioButton.setSelected(false);
                }
            }
        });


        itemHolder.IntegBOX.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Set the button's appearance
                ((CheckBox) v).setChecked(!((CheckBox) v).isChecked());

                // if button Already in checked statue
                if (((CheckBox) v).isChecked()) {

                    Iterator it = selectedCheckBox.entrySet().iterator();
                    while (it.hasNext()) {
                        Map.Entry pair = (Map.Entry) it.next();
                        int key = (Integer) pair.getKey();
                        if (key == (Integer) v.getTag()) {
                            it.remove();
                        }
                        // set it as false
                        ((CheckBox) v).setChecked(false);
                    }
                } else {
                    // Otherwise set it to true and add it to hashMap
                    ((CheckBox) v).setChecked(true);
                    selectedCheckBox.put((Integer) v.getTag(), true);
                }


                Toast.makeText(mActivity, String.format("Clicked on position #%s of Section %s", sectionAdapter.getPositionInSection(itemHolder.getAdapterPosition()), title), Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
        return new HeaderViewHolder(view);
    }

    @Override
    public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
        HeaderViewHolder headerHolder = (HeaderViewHolder) holder;
        headerHolder.tvTitle.setText(title);
    }

    // Remove All Btn Fuc





    class HeaderViewHolder extends RecyclerView.ViewHolder {

        private final TextView tvTitle;

        HeaderViewHolder(View view) {
            super(view);
            tvTitle = (TextView) view.findViewById(R.id.DishName);
        }
    }

    class ItemViewHolder extends RecyclerView.ViewHolder implements CompoundButton.OnCheckedChangeListener {

        private final View rootView;
        private final TextView tvItem;
        private final CheckBox IntegBOX;

        ItemViewHolder(View view) {
            super(view);

            rootView = view;
            tvItem = (TextView) view.findViewById(R.id.DishName);
            IntegBOX = (CheckBox) view.findViewById(R.id.chooseDish);
            IntegBOX.setOnCheckedChangeListener(this);
        }

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //   int position = getAdapterPosition();
            //   list.get(position).checked = isChecked;
        }
    }


}


private class Item {
    String name;
    boolean checked;

    Item(String name) {
        this.name = name;
        checked = false;
    }
}

add sections code :

 for (int d = 0; d < DishesIngredientsShoppingList.size(); d++) {
        contacts = new ArrayList<>();
        for (int i = 0; i < DishesIngredientsShoppingList.get(d).getGroups().length; i++) {
            for (int g = 0; g < DishesIngredientsShoppingList.get(d).getGroups()[i].getIngredients().length; g++) {
                if (Language)
                    contacts.add(new Item(DishesIngredientsShoppingList.get(d).getGroups()[i].getIngredients()[g].getName()));
                else
                    contacts.add(new Item(DishesIngredientsShoppingList.get(d).getGroups()[i].getIngredients()[g].getNameEnglish()));


            }
        }

     sectionAdapter = new SectionedRecyclerViewAdapter();
    ArrayList<Item> contacts = new ArrayList<>();
    // ArrayList<String> dishNames = new ArrayList<>();
    mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
             if (Language)
            sectionAdapter.addSection(DishesIngredientsShoppingList.get(d).getName(), new ContactsSection(DishesIngredientsShoppingList.get(d).getName(),contacts));
        else
            sectionAdapter.addSection(DishesIngredientsShoppingList.get(d).getEnglishName(), new ContactsSection(DishesIngredientsShoppingList.get(d).getEnglishName(),contacts));


    }
    mRecyclerView.setAdapter(sectionAdapter);
@luizgrp luizgrp added the invalid label May 1, 2017
@luizgrp
Copy link
Owner

luizgrp commented May 1, 2017

Hi @heshesh2010,

Please only open issues here related to the library itself. For help regarding your particular project, please use Stack Overflow.

It seems that you have are having many different problems with your project and I've been trying to help you in your thread, but you should ask one question per post.

First tip in order to get effective answer in Stack Overflow is to "Search and research". If you don't understand why the TAG variable is returning the same string, please search about java final keyword, variable scopes and class constructors.

There is a working example of the library's notifyItemRemovedFromSection method in the demo app, but if you really think there is a problem with it, please submit a pull request with a unit test reproducing the failure and I will have a look on it from there.

Thanks

@heshesh2010
Copy link
Author

Hi , i'm talking about your library i'm using your full code not my project , but your method in library
sectionAdapter.notifyItemRemovedFromSection(TAG, key);
not working as expected , also the problem occurs in TAG and title and it is not FINAL
i was do a lot of search but no luck

thank you

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants