Android ListView - вызов getView для невидимых элементов - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть относительное расположение над моим списком. И относительное расположение перемещается вверх одновременно с прокруткой списка. Например, если высотаlativeLayout равна 500px, заполнение listView становится 500px, а относительныйLayout остается в области заполнения. Когда просмотр списка прокручивается вверх, относительный вывод увеличивается также в тех же пикселях.

Все работает нормально, если элементы listView созданы. Однако, если высотаlativeLayout выше, чем видимая область, заполнение становится настолько высоким, что элементы listView не создаются. Потому что только видимая часть представления списка создается путем вызова getView. А прокрутка вверх не работает, так как в списке нет элементов.

Так что, если я смогу загрузить также невидимые элементы, которые находятся ниже области заполнения, все будет работать нормально. Есть ли в любом случае, чтобы сделать это или создать вызов getView вручную с помощью for для l oop?

enter image description here

Ниже приведен код, который я использую.

    private void reloadData() {

    adapter = new MyListAdapter();
    list = (ListView) view.findViewById(R.id.fragment_commenters_myListView);
    list.setAdapter(adapter);
    list.setPadding(0, movingRelativeayout.getHeight(), 0, 0);


    list.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub
            this.isScrollCompleted();
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                             int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub


            if (list.getChildAt(0) != null) {


                View listChildView = list.getChildAt(0);
                int scrollPosition = -listChildView.getTop() + list.getFirstVisiblePosition() * listChildView.getHeight();

                if (scrollPosition < 5000) {

                    RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams) movingRelativeayout.getLayoutParams();
                    params1.setMargins(Math.round(0 * dipToPixel), Math.round(-scrollPosition) - movingRelativeayout.getHeight(), Math.round(0 * dipToPixel), Math.round(0 * dipToPixel));
                    movingRelativeayout.setLayoutParams(params1);

                }

            }

        }

        private void isScrollCompleted() {

        }
    });



}


private class MyListAdapter extends ArrayAdapter<String>  {
    public MyListAdapter() {
        super(getActivity().getApplicationContext(), R.layout.fragment_commenters_cell, myItemList);
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View cellView = convertView;


        if (cellView == null){
            cellView = getActivity().getLayoutInflater().inflate(R.layout.fragment_commenters_cell, parent, false);
        }

        cellProfileBtn = (Button) cellView.findViewById(R.id.fragment_commenters_cell_profileBtn);
        cellProfileImage = (ImageView) cellView.findViewById(R.id.fragment_commenters_cell_profileImg);




        cellProfileImage.setImageBitmap(resultsImageBitmapFiles.get(position));


        cellProfileBtn.setText(resultsNameArray.get(position));




        return cellView;

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...