这似乎是一个简单的解决方案,但似乎设置
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private LinearLayoutManager mLayoutManager;
.... // More code
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
// Add item decoration
mRecyclerView.addItemDecoration(new SpacesItemDecoration(DIVIDER_SPACE));
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(true); // THIS ALSO SETS setStackFromBottom to true
mRecyclerView.setLayoutManager(mLayoutManager);
似乎还要从底部设置要堆叠的项目
我尝试将setStackFromBottom
设置为false,但是没有做任何事情,反转项目顺序的最佳方法是什么,但仍然从顶部填充?我应该使用Custom Comparator类吗?我希望这比创建另一个类更简单。
答案 0 :(得分:107)
用于反转项目遍历和布局顺序。这与RTL视图的布局更改类似。设置为true时,第一项布置在UI的末尾,第二项布置在它之前等。对于水平布局,它取决于布局方向。当设置为true时,如果RecyclerView是LTR,那么它将从RTL布局,如果RecyclerView}是RTL,它将从LTR布局。如果您要查找
setStackFromBottom(boolean)
的完全相同的行为,请使用setStackFromEnd(boolean)
因此,请尝试在LinearLayoutManager实例上使用setStackFromEnd(boolean)
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
答案 1 :(得分:29)
接受的答案很有效,我遇到了困难,因为我遇到了android.os.Bundle
错误。
然后在寻找解决方案后,我发现那里有一个愚蠢的错误。我使用的是can not resolve method setReverseLayout
而不是RecyclerView.LayoutManager
。
所以我想要消除这里的混乱,我需要把它作为答案。
请勿使用LinearLayoutManager
代替RecyclerView.LayoutManager
LinearLayoutManager
...
// Declare your RecyclerView and the LinearLayoutManager like this
private RecyclerView mRecyclerView;
private LinearLayoutManager mLayoutManager;
答案 2 :(得分:0)
我找到了使用xml解决此问题的有效方法:
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
app:stackFromEnd="true"
答案 3 :(得分:0)
我正在使用水平方向为水平的RecyclerView,并且由于某些未知原因,当我尝试使用setReverseLayout(true)
反转布局时,可接受的答案对我不起作用。
但是通过XML可以正常工作。
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recycler_view"
android:orientation="horizontal"
app:reverseLayout="true"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
答案 4 :(得分:0)
我遇到了这个错误,我的工作输入了错误
recyclerView = vista.findViewById(R.id.recyclerView);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(false);
mLayoutManager.setStackFromEnd(false);
recyclerView.setLayoutManager(mLayoutManager);
要在我的应用中搜索,请搜索名称
Query busqueda = databaseReference.child("Productos").orderByChild("pTitle").startAt(txtSearch.getText().toString());
busqueda.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
postModelList.clear();
for(DataSnapshot ds: dataSnapshot.getChildren()){
PostModel postModel = ds.getValue(PostModel.class);
postModelList.add(postModel);
postAdapter = new PostAdapter(getContext(), postModelList);
recyclerView.setAdapter(postAdapter);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});