我看到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);
}
});
}
有人知道为什么会发生这种情况以及如何解决这个问题吗?
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);
}
});