首页 > 解决方案 > 当我添加帖子时,我想显示更新的页面列表

问题描述

我想在添加帖子时滚动位置

这是一个代码

我想我使用 scrolltoPostion 函数,但在使用它之前我必须定义 RecyclerView 但是在这个类中我在定义 RecyclerView 时遇到问题,因为我不知道添加到 Recycler 视图 ex)Recyclerview rv 的正确变量是什么 rv=???

private void addPost(Post post) {

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("Posts").push();


    // get post unique ID and upadte post key
    String key = myRef.getKey();
    post.setPostKey(key);
    // add post data to firebase database

    myRef.setValue(post).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {

            popupClickProgress.setVisibility(View.INVISIBLE);
            popupAddBtn.setVisibility(View.VISIBLE);
            // illegal 오류 해결 수정
            if(popAddPost!=null&&popAddPost.isShowing()){
                popAddPost.dismiss();
            }
            RecyclerView rv;
            rv.getLayoutManager().scrollToPosition(0);

        }
    });

}

但我不能在这个类中使用 RecyclerView。那我该如何解决呢?在其他类中,我使用了 Recycler View 这是一个代码

RecyclerView postRecyclerView ;
PostAdapter postAdapter;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
List<Post> postList;


public HomeFragment() {
    // Required empty public constructor
}


// TODO: Rename and change types and number of parameters
public static HomeFragment newInstance(String param1, String param2) {
    HomeFragment fragment = new HomeFragment();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    LinearLayoutManager lin = new LinearLayoutManager(getActivity());
    lin.setStackFromEnd(true);
    lin.setReverseLayout(true);
    View fragmentView = inflater.inflate(R.layout.fragment_home, container, false);
    postRecyclerView = fragmentView.findViewById(R.id.postRV);
    postRecyclerView.setLayoutManager(lin);
    postRecyclerView.setHasFixedSize(true);
    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = firebaseDatabase.getReference("Posts");
    return fragmentView;
}

我想也许我在这里使用这个 postRecyclerView 变量或任何其他解决方案?我是初学者,所以请给我提示。

标签: androidandroid-recyclerview

解决方案


因此,据我了解,您希望在向该列表添加新项目时更新回收站视图(我想是数组)。因此,请为此使用更新程序功能。您可以将回收站视图定义为您想要的任何内容, rv 工作得很好。您可以使用实时数据来处理您提供给回收站视图的数据。检查一下,看看它是否以某种方式对您有所帮助。 https://medium.com/@atifmukhtar/recycler-view-with-mvvm-livedata-a1fd062d2280


推荐阅读