我正在开发一个Android应用程序,其中我在'FirebaseDatabase`上存储两种不同类型的信息.
然后在MainActivity,我正在检索它们并向用户显示RecyclerView.这两个信息都是以不同的布局显示的,即两者的布局都不同,这就是为什么我有两个不同的Model类,现在有两个不同的适配器.我正在使用@MikePenz的FastAdapter
所以,我做的是我在recyclerview上设置适配器的顺序与从数据库中获取信息的顺序相同:
1.
public void prepareDataOfSRequests() {
gModelClass = new GModelClass(postedBy, ***, ***, ***, "error", ***, formattedTime, currentLatitude, currentLongitude, utcFormatDateTime, userEmail, userID, null, ***, itemID);
fastItemAdapter.add(0, gModelClass);
recyclerView.setAdapter(fastItemAdapter);
recyclerView.smoothScrollToPosition(0);
emptyRVtext.setVisibility(View.INVISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
2.
public void prepareDataOfERequests() {
eModelClass = new EModelClass(***, ***, ***, ***, "error", ***, formattedTimeE, currentLatitudeE, currentLongitudeE, utcFormatDateTimeE, userEmailE, userIDE, null, ***, ***, ***, ***, itemID);
fastItemAdapterER.add(eventRequestsModelClass);
recyclerView.setAdapter(fastItemAdapterER);
recyclerView.smoothScrollToPosition(0);
emptyRVtext.setVisibility(View.INVISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
由于recyclerview只有一个,我正在逐个设置2个不同的适配器,所以Recyclerview正在使用第二个适配器进行更新并仅显示其内容.
那么,如何将适配器显示或设置为相同的"RecyclerView"并显示存储在两个适配器中的内容.
android android-adapter android-viewholder android-recyclerview fastadapter
我有几个项目,RecyclerView每个项目都有一个long保存的值.我正在使用FastAdapter作为我的适配器RecyclerView.
假设有在7个项目RecyclerView与长值:11122,12321,-98811,8870,-88009,3398,和-22113.
所以,我想要做的是,我想使用这个逻辑基于上面给出的长值过滤项目:
if (l <= 1000) {
// show items with long value <=1000
} else if (l > 1000) {
// show items with long value >1000
}
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的东西,但没有成功.
更新1:这里的项目是一种存储在CardView其中然后显示的不同数据RecyclerView.每张卡包含不同的数据,其中一个是上面给出的long值.我想long根据上面给出的逻辑,根据存储在每张卡中的这些值来过滤数据.
请帮助我解决这个问题,并提出一些我可以实现此目的的算法或代码.
我正在尝试实现fastadapter。我只是复制了示例代码,并试图使其正常工作。当我尝试时,它在我的“回收者”视图中不显示任何内容。通过调试,我发现没有调用bindView()。
我的SampleItem.jave
public class SimpleItem extends AbstractItem<SimpleItem, SimpleItem.ViewHolder> {
public StringHolder name;
public StringHolder description;
//The unique ID for this type of item
@Override
public int getType() {
return (int) System.currentTimeMillis();
}
//The layout to be used for this type of item
@Override
public int getLayoutRes() {
return R.layout.sample_item;
}
@Override
public ViewHolder getViewHolder(@NonNull View v) {
return new ViewHolder(v);
}
public void setName(String name){
this.name = new StringHolder(name);
}
public void setDescription(String description){
this.description = new StringHolder(description);
}
@Override …Run Code Online (Sandbox Code Playgroud) 对于这个问题,我在 Github准备了一个简单而有效的例子:
我的示例应用程序使用 okhttp 下载一个包含游戏中前 30 名玩家的 JSON 数组,并将它们存储到 SQLite Room 中。在片段中,我观察相应的LiveData<List<TopEntity>>对象并更新 FastAdapter 实例:
public class TopFragment extends Fragment {
private final ItemAdapter<TopItem> mItemAdapter = new ItemAdapter<>();
private final FastAdapter<TopItem> mFastAdapter = FastAdapter.with(mItemAdapter);
private TopViewModel mViewModel;
private ProgressBar mProgressBar;
private RecyclerView mRecyclerView;
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
mViewModel = ViewModelProviders.of(this).get(TopViewModel.class);
mViewModel.getTops().observe(this, tops -> {
mItemAdapter.clear();
for (TopEntity top: tops) {
TopItem item = new TopItem(top);
mItemAdapter.add(item); …Run Code Online (Sandbox Code Playgroud)