如何在适配器的顶部显示新数据?这是代码:-
对不起,刚才我发现我错误地复制了代码。对不起这是我的错。现在的问题是我想在适配器顶部显示最新的广告。...
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)
{
}
});
答案 0 :(得分:1)
此行:
tuitionPackageList.add(0, new TuitionPackage(tuitionPackageList));
您收到一个错误,因为您正在实例化一个以TuitionPackage
作为参数的tuitionPackageList
对象,并且我认为这是不正确的。
在代码的前面,您只是使用以下示例进行了相同的实例化:
TuitionPackage tuitionPackage = new TuitionPackage();
,然后将该项目添加到列表的末尾。
您是否要在位置0添加此项目?
编辑更改为此:
else {
TuitionPackage tuitionPackage = new TuitionPackage();
tuitionPackage.setPrice(mPriceView.getText().toString());
tuitionPackageList.add(0, tuitionPackage);
mPackageAdapter.notifyItemInserted(0);
}
答案 1 :(得分:1)
用此替换最后一个else块
TuitionPackage tuitionPackage = new TuitionPackage();
tuitionPackage.setPrice(mPriceView.getText().toString());
tuitionPackageList.add(tuitionPackage);
mPackageAdapter.notifyDataSetChanged();
答案 2 :(得分:0)
在上面的代码的帮助下,这是我的答案,将第一个广告排在最高位置:-
//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);