【问题标题】:How to display new item at the top position of the adapter?如何在适配器的顶部显示新项目?
【发布时间】:2018-11-08 16:45:05
【问题描述】:

如何在适配器顶部显示新数据?以下是代码:-

对不起,我错误地复制了编码,现在我才注意到。对不起这是我的错。现在的问题是我想在适配器顶部显示最新的广告......

mDatabase.child("Advertisement").child(mAuth.getUid()).addValueEventListener(new ValueEventListener()
    {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            //iterating through all the values in database
            mChildrenList = new ArrayList<>();
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
            {
                Advertisement advertisement = postSnapshot.getValue(Advertisement.class);
                mChildrenList.add(advertisement);
            }
            //Creating adapter
            mAdapter = new AdvertisementAdapter(getApplicationContext(), mChildrenList, "AddAds");

            //Adding adapter to recyclerview
            mRecyclerView.setAdapter(mAdapter);

            //mAdapter.notifyItemChanged(0);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError)
        {

        }
    });

【问题讨论】:

  • 你能给出你得到的错误的日志吗?
  • 什么是红色错误?请提供logcat

标签: java android android-studio


【解决方案1】:

这一行:

tuitionPackageList.add(0, new TuitionPackage(tuitionPackageList));

您收到一个错误,因为您正在以 tuitionPackageList 作为参数来实例化 TuitionPackage 对象,我认为这是不正确的。
在前面的代码中,您使用以下代码进行了相同的实例化:

TuitionPackage tuitionPackage = new TuitionPackage();

并且您将该项目添加到列表的末尾。
您想在位置 0 处添加此项目吗?
编辑改为:

else {
    TuitionPackage tuitionPackage = new TuitionPackage();
    tuitionPackage.setPrice(mPriceView.getText().toString());
    tuitionPackageList.add(0, tuitionPackage);
    mPackageAdapter.notifyItemInserted(0);
}

【讨论】:

  • 有效!但要交学费。我想要整个广告。最新添加的广告将在适配器的顶部位置...
  • 你知道我不知道你所有的代码是如何工作的,但是如果你想把新项目放在顶部,你必须像我上面写的代码一样将它插入到位置 0。不是插在最上面吗?
  • 是的。好的,我先试试。先生,可以给您发电子邮件吗?如果有什么问题,我很容易问你...
  • 在这里发表评论
【解决方案2】:

用这个替换最后一个else块

    TuitionPackage tuitionPackage = new TuitionPackage();
    tuitionPackage.setPrice(mPriceView.getText().toString());
    tuitionPackageList.add(tuitionPackage);
    mPackageAdapter.notifyDataSetChanged();

【讨论】:

    【解决方案3】:

    这是我在上述编码的帮助下对顶部位置的第一个广告进行排序的答案:-

    //Iterating through all the values in database
                mChildrenList = new ArrayList<>();
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
                {
                    Advertisement advertisement = postSnapshot.getValue(Advertisement.class);
                    mChildrenList.add(0, advertisement);
                }
    
                //Creating adapter
                mAdapter = new AdvertisementAdapter(getApplicationContext(), mChildrenList, "AddAds");
    
                //Adding adapter to recyclerview
                mRecyclerView.setAdapter(mAdapter);
                mAdapter.notifyItemInserted(0);
    

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 2021-04-27
      • 2016-02-05
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      相关资源
      最近更新 更多