Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以相反的顺序显示ListView(最新的在顶部),并在滚动ListView上保持顺序_Android_Listview_Arraylist_Collections - Fatal编程技术网

Android 以相反的顺序显示ListView(最新的在顶部),并在滚动ListView上保持顺序

Android 以相反的顺序显示ListView(最新的在顶部),并在滚动ListView上保持顺序,android,listview,arraylist,collections,Android,Listview,Arraylist,Collections,我使用创建日期的顺序从FireBase数据库获取数据,并显示在ListView中,但我首先显示创建的第一本书: 例如:我创建了书1、书2、书3、书4、书5、书6、书7、书8 假设在我的listView中显示添加的5本最新书籍,在Croll listView中显示其他两本书籍: 我拥有的:我的ListView书籍显示如下: 第一册 第二册 第三册 第四册 第五册 Onscroll列表查看我拥有的: 第六册 第七册 第八册 我想要的是通过最新添加的方式显示我的书籍: 第八册 第七册 第六册 第五册

我使用创建日期的顺序从FireBase数据库获取数据,并显示在ListView中,但我首先显示创建的第一本书: 例如:我创建了书1、书2、书3、书4、书5、书6、书7、书8

假设在我的listView中显示添加的5本最新书籍,在Croll listView中显示其他两本书籍:

我拥有的:我的ListView书籍显示如下:

第一册 第二册 第三册 第四册 第五册 Onscroll列表查看我拥有的:

第六册 第七册 第八册 我想要的是通过最新添加的方式显示我的书籍:

第八册 第七册 第六册 第五册 第四册 在滚动列表视图中我需要什么:

第三册 第二册 第一册 片段显示列表视图的代码:

listAdapter = new FeedListAdapter(getActivity(), feedItems);
        listView.setAdapter(listAdapter);
        listView.setOnItemClickListener(myClickListener);

ref.orderByChild("date_creation").limitToFirst(5).addListenerForSingleValueEvent(new ValueEventListener()  {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot dataSnap : dataSnapshot.getChildren()) {

                            Book valueBook = dataSnap.getValue(Book.class);
                            keyId = dataSnap.getKey();

                            String titreLivreToDisplay = valueBook.getNom_livre();
                            String descLivreToDisplay = valueBook.getDesc_livre();
                            String prixLivreToDisplay = valueBook.getPrix_livre();
                            timeToDisplay = valueBook.getDate_creation();

                            valueBook.setNom_livre(titreLivreToDisplay);
                            valueBook.setDesc_livre(descLivreToDisplay);
                            valueBook.setPrix_livre(prixLivreToDisplay);
                            valueBook.setDate_creation(timeToDisplay);



                            feedItems.add(valueBook);


                        }


                        Collections.sort(feedItems, new Comparator<Book>() {
                            @Override
                            public int compare(Book book1, Book book2)
                            {

                                return  book1.getDate_creation().compareTo(book2.getDate_creation());
                            }
                        });


                        listAdapter.notifyDataSetChanged();


                    }


                });
  listView.setOnScrollListener(new AbsListView.OnScrollListener() {

            private int currentVisibleItemCount;
            private int currentScrollState;
            private int currentFirstVisibleItem;
            private int totalItem;

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

                int first = view.getFirstVisiblePosition();
                int count = view.getChildCount();

                if (scrollState == SCROLL_STATE_IDLE || (first + count > listAdapter.getCount()) ) {
                    listView.invalidateViews();
                }

                this.currentScrollState = scrollState;
                this.isScrollCompleted();


            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                                 int visibleItemCount, int totalItemCount) {

                this.currentFirstVisibleItem = firstVisibleItem;
                this.currentVisibleItemCount = visibleItemCount;
                this.totalItem = totalItemCount;


            }

            private void isScrollCompleted() {
           if (totalItem - currentFirstVisibleItem == currentVisibleItemCount
                        && this.currentScrollState == SCROLL_STATE_IDLE) {


                    ref.orderByChild("date_creation").startAt(timeToDisplay+1).limitToFirst(2).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {


                            for (DataSnapshot dataSnap : dataSnapshot.getChildren()) {

                                Book valueBook = dataSnap.getValue(Book.class);
                                keyId = dataSnap.getKey();

                                String titreLivreToDisplay = valueBook.getNom_livre();
                                String descLivreToDisplay = valueBook.getDesc_livre();
                                String prixLivreToDisplay = valueBook.getPrix_livre();
                                timeToDisplay = valueBook.getDate_creation();

                                valueBook.setNom_livre(titreLivreToDisplay);
                                valueBook.setDesc_livre(descLivreToDisplay);
                                valueBook.setPrix_livre(prixLivreToDisplay);
                                valueBook.setDate_creation(timeToDisplay);

                                feedItems.add(valueBook);


                            }

                            listAdapter.notifyDataSetChanged();


                        }



                    });

                }
            }

        });
适配器代码:

 public FeedListAdapter(Context context, List<Book> feedItems) {
        this.context = context;
        this.feedItems = feedItems;
        this.mStringFilterList=feedItems;

    }

    static class ViewHolder {
        TextView name ;
        TextView timestamp;
        TextView statusMsg ;
        TextView prix;


    }

    @Override
    public int getCount() {
        return feedItems.size();

    }


    @Override
    public Object getItem(int location) {
        return feedItems.get(location);
    }

    @Override
    public long getItemId(int position) {

        return feedItems.indexOf(getItem(position));

    }

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


        if (inflater == null)
            inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ViewHolder holder;

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.feed_item, null);
            holder = new ViewHolder();
            holder.name = (TextView) convertView.findViewById(R.id.name_book_display);
            holder.timestamp = (TextView) convertView.findViewById(R.id.timestamp);
            holder.statusMsg = (TextView) convertView.findViewById(R.id.desc_display);
            holder.prix = (TextView) convertView.findViewById(R.id.prix_display);

            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }

        Book item = feedItems.get(position);


        if (!TextUtils.isEmpty(item.getNom_livre())) {
            holder.name.setText(item.getNom_livre());
            holder.name.setVisibility(View.VISIBLE);
        } else { 
            holder.name.setVisibility(View.GONE);
        }

        if (!TextUtils.isEmpty(item.getDate_creation())) {
            holder.timestamp.setText(item.getDate_creation());
            holder.timestamp.setVisibility(View.VISIBLE);
        } else {

            holder.timestamp.setVisibility(View.GONE);
        }

        if (!TextUtils.isEmpty(item.getDesc_livre())) {
            holder.statusMsg.setText(item.getDesc_livre());
            holder.statusMsg.setVisibility(View.VISIBLE);
        } else {
            holder.statusMsg.setVisibility(View.GONE);
        }

        if (item.getPrix_livre() != null) {
            holder.prix.setText(item.getPrix_livre() + " DH");
            holder.prix.setVisibility(View.VISIBLE);
        } else {
            holder.prix.setVisibility(View.GONE);
        }



        return convertView;
    }
无论何时将项目添加到映射到 ListView,将该项添加到位置0

如下

feedItems.add(0,valueBook);
上行将在顶部添加最新的项目