提问者:小点点

Android Firebase无法解析方法getRef(位置)


我看到github中有很多例子,人们都在使用这样的方法:

String postKey = getRef(position).getKey();

但在我的Android Studio中,它不会解析getRef(int)方法。这是代码:

@Override
public void onDataChange(DataSnapshot dataSnapshot) {

    articleModel = new ArrayList<>();
    for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
        articleModel.add(postSnapshot.getValue(ArticleModel.class));
    }

    adapter = new ArticleAdapter(getActivity().getApplicationContext(), R.layout.fragment_article_list_items, articleModel);

    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
            Intent intent = new Intent(getActivity(), ArticleDetailsActivity.class);
            String postKey = getRef(position).getKey();
            intent.putExtra(ArticleDetailsActivity.EXTRA_POST_KEY, postKey);
            getActivity().startActivity(intent);
        }
    });
}

有人知道为什么会发生这种情况以及如何解决这个问题吗?


共1个答案

匿名用户

FirebaseAPI中实际上没有getRef这样的功能。

到目前为止,我已经了解到您正在尝试将onItemClickListener放入您的ListView,并且您正在尝试将一些传递给ArticleDetailsActivity。所以我认为,当您填充了文章模型列表时,您可以在其中找到键。

所以修改后的代码可能如下所示。

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
        Intent intent = new Intent(getActivity(), ArticleDetailsActivity.class);

        // Find the key in the list you've populated earlier. 
        String postKey = articleModel.get(position).getKey();

        intent.putExtra(ArticleDetailsActivity.EXTRA_POST_KEY, postKey);
        getActivity().startActivity(intent);
    }
});