android - 添加项目时,RecyclerView 未固定到顶部
问题描述
在添加了足够的项目以使 RecyclerView 可滚动之后,我有这个 RecyclerView 不想再在位置 0 显示项目。相反,它似乎坚持底部项目并向下滚动这个项目,尽管其他项目添加在位置 0。
public class hauptseite extends AppCompatActivity {
private ArrayList<ExampleItem> mExampleList;
private RecyclerView mRecyclerView;
private ExampleAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private ImageButton btnInput;
private EditText editTextInput;
private int position = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnInput = findViewById(R.id.btn_add);
editTextInput = findViewById(R.id.name_add);
createExampleList();
buildRecyclerView();
btnInput = findViewById(R.id.btn_add);
editTextInput = findViewById(R.id.name_add);
btnInput.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editTextInput.getText().toString();
insertItem(name);
}
});
}
public void insertItem(String name) {
mExampleList.add(position, new ExampleItem(name));
mAdapter.notifyItemInserted(position);
editTextInput.setText("");
}
public void removeItem(int position) {
mExampleList.remove(position);
mAdapter.notifyItemRemoved(position);
}
public void createExampleList() {
mExampleList = new ArrayList<>();
}
public void buildRecyclerView() {
mRecyclerView = findViewById(R.id.recyclerName);
mRecyclerView.setHasFixedSize(false);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new ExampleAdapter(mExampleList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new ExampleAdapter.OnItemClickListener(){
@Override
public void onDeleteClick(int position) {
removeItem(position);
}
});
}
和适配器
public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
private ArrayList<ExampleItem> mExampleList;
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onDeleteClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
public static class ExampleViewHolder extends RecyclerView.ViewHolder{
public TextView mTextView1;
public ImageView mDeleteName;
public ExampleViewHolder(View itemView, final OnItemClickListener listener) {
super(itemView);
mTextView1 = itemView.findViewById(R.id.name_added);
mDeleteName = itemView.findViewById(R.id.delete_name);
mDeleteName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
listener.onDeleteClick(position);
}
}
}
});
}
}
public ExampleAdapter(ArrayList<ExampleItem> exampleList) {
mExampleList = exampleList;
}
@NonNull
@Override
public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, parent, false);
ExampleViewHolder evh = new ExampleViewHolder(v, mListener);
return evh;
}
@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
ExampleItem currentItem = mExampleList.get(position);
holder.mTextView1.setText(currentItem.getName1());
}
@Override
public int getItemCount() {
return mExampleList.size();
}
那么当我希望我的 RecyclerView 保持在位置 0 的项目时,我需要更改什么,除非我开始向下滚动?
解决方案
您可以滚动到插件上的所需位置:
mLayoutManager.scrollToPosition(yourPosition)
推荐阅读
- php - 多个用户编辑同一个表单
- python-3.x - 读取存储桶文件时 AWS Lambda 函数超时
- python - 如何修复一些 cvxpy 矩阵元素,同时允许其他元素变化?
- javascript - 将错误消息传递给 Deferred.reject() 时不拒绝承诺
- ifstream - 如何在 QT 中从文件加载列表时解决字符串拆分问题
- python - 对字符串使用 for 循环 (Python)
- node.js - 文本搜索 mongodb 的字段类型 Number
- python - 如何在python中解析多项式字符串的所有系数
- python - 无法通过 urllib.request 向资源发出 URL 请求
- kubernetes-helm - 无法通过 helm 下载 JupyterHub