Расширяемый список не расширяется с помощью AdapterView.OnItemSelectedListener в классе Java - PullRequest
1 голос
/ 09 октября 2019

Я создаю класс, в котором я использую прокручиваемую панель инструментов с расширяемым списком, все работает нормально, но когда я нажимаю на расширяемый список, он не расширяется по мере необходимости, пожалуйста, помогите мне, если я что-то упустил. я создал класс адаптера и использовал его в своем основном классе.

public class MyAdapter extends BaseExpandableListAdapter 
{

    Context context;
    List<String> listGroup;
    HashMap<String, List<String>> listItems;
    public MyAdapter(Context context, List<String> listGroup, HashMap<String,List<String>>
            listItems) {
        this.context = context;
        this.listGroup = listGroup;
        this.listItems = listItems;
    }
    @Override
    public int getGroupCount() {
        return listGroup.size();
    }
    @Override
    public int getChildrenCount(int i) {
        return this.listItems.get(this.listGroup.get(i)).size();
    }
    @Override
    public Object getGroup(int i)
    { return this.listGroup.get(i);  }

    @Override
    public Object getChild(int i, int i1) {return this.listItems.get(this.listGroup.get(i)).get(i1);
    }

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

    @Override
    public long getChildId(int i, int i1)
    {
        return i1;
    }

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

    @Override
    public View getGroupView(int i, boolean b, View views, ViewGroup viewGroup) {
        String group = (String) getGroup(i);
        if (views== null){
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            views = layoutInflater.inflate(R.layout.list_group,null);
        }

        TextView textView = views.findViewById(R.id.list_parent);
        textView.setText(group);
        return views;
    }

    @Override
    public View getChildView(final int i, final int i1, boolean b, View view, final ViewGroup viewGroup) {
        final String child = (String) getChild(i,i1);

        if (view == null){
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.list_items,null);

        }
        TextView textView = view.findViewById(R.id.text_view1);
        textView.setText(child);

        return view;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
}

Основным классом является класс прокрутки, в котором я использую расширяемый список

public class ScrollingActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    // Expandable list Definations
    ExpandableListView expandable_list;
    HashMap<String, List<String>> listitems;
    List<String> listHeader;
    MyAdapter myAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scrolling);

        //FindViewById of Expandable Data List
        expandable_list = findViewById(R.id.expandable_list);
        listHeader = new ArrayList<>();
        listitems = new HashMap<>();
        myAdapter = new MyAdapter(this, listHeader, listitems);
        expandable_list.setAdapter(myAdapter);
        initlistData();


    private void initlistData() {

        listHeader.add(getString(R.string.group11));

        String[] aray;

        List<String> list = new ArrayList<>();
        aray = getResources().getStringArray(R.array.group1);
        for (String item : aray) {
            list.add(item);
        }

        listitems.put(listHeader.get(0), list);
        myAdapter.notifyDataSetChanged();
    }

я редактировал основной коди просто вставьте основной код, единственная главная проблема в том, что все работает, но когда я нажимаю на свой расширяемый список, он не прокручивается, как требуется.

1 Ответ

0 голосов
/ 09 октября 2019

вы сначала инициализировали lists, затем установите adapter на expandablelistview!

        expandable_list = findViewById(R.id.expandable_list);
        listHeader = new ArrayList<>();
        listitems = new HashMap<>();

        initlistData();  // =============> call this method here!

        myAdapter = new MyAdapter(this, listHeader, listitems);
        expandable_list.setAdapter(myAdapter);
...