Exapandable Listview внутри фрагмента - PullRequest
0 голосов
/ 06 марта 2019

Я использую Exapandable listview внутри фрагмента, я передаю 8 значений, но он показывает только 6 значений, и что также exapnadable listview не прокручивается. То же самое, если я включаю его в деятельности ... все работает нормально. Но когда Я использую внутри фрагмента, он показывает ошибку. Кто-нибудь может сказать мне, как ее решить ... вот мой код

public class GroupsFragment extends Fragment {
    View groupview;
    List<String> tdp, congress, ysrcp, bjp;
    ExpandableListView expandableListView;
    HashMap<String, ArrayList<GroupModel>> expandableListDetail;
    ArrayList<GroupModel> contacts;
    List<String> expandableListTitle;
    ExpandableListAdapter expandableListAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the dailog_layout for this fragment
        groupview = inflater.inflate(R.layout.contacts_expandable_list, container, false);
        expandableListView = groupview.findViewById(R.id.expanded_list_view_contacts);
        contacts = new ArrayList<>();

        return groupview;
    }

    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        expandableListDetail = new HashMap<String, ArrayList<GroupModel>>();
        showContactsList();
    }

    @SuppressLint("ClickableViewAccessibility")
    private void showContactsList() {
        getExpandableListItems();

        expandableListTitle = new ArrayList<String>(expandableListDetail.keySet());
        expandableListAdapter = new CustomContactsExapandableListAdapter(getActivity(), expandableListTitle, expandableListDetail);
        expandableListView.setAdapter(expandableListAdapter);
    }

    private HashMap<String, ArrayList<GroupModel>> getExpandableListItems() {
        contacts.add(new GroupModel("gopi", "Officer", "9999999999", "abcd0"));

        expandableListDetail.put("TDP", contacts);
        expandableListDetail.put("YSRCP", contacts);
        expandableListDetail.put("Congress", contacts);
        expandableListDetail.put("BJP", contacts);
        expandableListDetail.put("ABC", contacts);
        expandableListDetail.put("CDE", contacts);
        expandableListDetail.put("DEF", contacts);
        expandableListDetail.put("FED", contacts);


        return expandableListDetail;
    }
}

а вот и адаптер

public class CustomContactsExapandableListAdapter extends BaseExpandableListAdapter {

    private Context context;
    private List<String> expandableListTitle;
    private HashMap<String, ArrayList<GroupModel>> expandableListDetail;

    public CustomContactsExapandableListAdapter(Context context, List<String> expandableListTitle,
                                       HashMap<String, ArrayList<GroupModel>> expandableListDetail) {
        this.context = context;
        this.expandableListTitle = expandableListTitle;
        this.expandableListDetail = expandableListDetail;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return this.expandableListDetail.get(this.expandableListTitle.get(groupPosition))
                .get(childPosition);
    }


    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }



    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        Log.i("test", "the value in exapandable is " + getChild(groupPosition, childPosition));
        final GroupModel expandedListText = (GroupModel) getChild(groupPosition, childPosition);

        Log.i("test", "the text   is " + expandedListText.getName()+ " "+ expandedListText.getDesignation() + " " +expandedListText.getMobile() );
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.single_contact, null);
        }
        TextView expandedListTextViewName = (TextView) convertView
                .findViewById(R.id.contact_name);
        TextView expandedListTextViewMobile = (TextView) convertView
                .findViewById(R.id.contact_mobile_num);
        expandedListTextViewMobile.setText(expandedListText.getDesignation());
        expandedListTextViewName.setText(expandedListText.getName());
        return convertView;

    }


    @Override
    public int getChildrenCount(int groupPosition) {
        return this.expandableListDetail.get(this.expandableListTitle.get(groupPosition))
                .size();
    }


    @Override
    public Object getGroup(int groupPosition) {
        return this.expandableListTitle.get(groupPosition);
    }

    @Override
    public int getGroupCount() {
        Log.i("test", "the value in exapandable group is " + expandableListTitle.size());
        return expandableListTitle.size();
    }



    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }


    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        String listTitle = (String) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.context.
                    getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.single_party, null);
        }
        TextView listTitleTextView = (TextView) convertView
                .findViewById(R.id.party_name);
        ImageView imageView=convertView.findViewById(R.id.party_expandable_image);
        if(isExpanded){
            imageView.setImageResource(R.drawable.minus_icon_contacts);
        }
        else {
            imageView.setImageResource(R.drawable.plus_icon_contacts);
        }
        listTitleTextView.setTypeface(null, Typeface.BOLD);
        listTitleTextView.setText(listTitle);
        return convertView;
    }


    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...