Exp*_*ind 3 android listview android-recyclerview
我想制作基于 RecyclerView 的列表,用户可以无限滚动。上面只有几个项目,但是每当用户滚动到末尾时,列表的第一个项目就会出现等等。此功能可以在两个滚动方向上工作。
你很幸运,我几天前就做到了。
我的解决方案中的技巧是覆盖 的getItemCount(),adapter以便它可以Integer.MAX_VALUE使用价值。
在getItemCount()被使用的recyclerview,以确定的多少项目有在列表中,如果它总是返回MAX_VALUE,该列表是非常无限。
这是我的例子:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mlayout);
RecyclerView myRv = findViewById(R.id.myRv);
ArrayList<MyObject> objectList = new ArrayList<>();
objectList = retrieveObjectList();
myRv.setLayoutManager(new SlowLayoutManager(myActivity.this));
MyAdapter myAdapter = new MyAdapter(objectList);
myRv.setAdapter(myAdapter);
}
Run Code Online (Sandbox Code Playgroud)
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private ArrayList<MyObject> myObjects;
public MyAdapter(ArrayList<MyObject> myObjects) {
this.myObjects = myObjects;
}
//used to retrieve the effective item position in list
public int getActualItemCount() {
if (myObjects == null) {
myObjects = new ArrayList<>();
}
return myObjects.size();
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
@NonNull
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyAdapter.MyViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_view, parent, false));
}
@Override
public void onBindViewHolder(@NonNull MessagesAdapter.MessagesViewHolder holder, int position) {
if (myObjects.size() == 0) {
holder.bind(null);
} else {
MyObject myObject = myObjects.get(position % myObjects.size());
holder.bind(SMSMessage);
}
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView myTv;
MessagesViewHolder(View itemView) {
super(itemView);
myTv = itemView.findViewById(R.id.myTv);
}
void bind(MyObject myObject) {
if (myObject != null) {
myTv.setText(myObject.getProperty());
} else {
myTv.setText("");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用这种方式(obj 我更改了名称,以便您可以用您的名称填充它们,因为我的一些与本地名称相似)。
如果您有任何问题,请自由提问
| 归档时间: |
|
| 查看次数: |
3605 次 |
| 最近记录: |