如何获取通过FirebaseListAdapter填充的ListView项的值

时间:2016-04-07 20:41:56

标签: android listview firebase firebase-realtime-database firebaseui

我使用ListView填充FirebaseListAdapter。现在,我希望OnItemClickListenerToast中显示所点击项目的值(项目上显示的文字)。

ListView listView;
ListAdapter listAdapter;

mFirebaseRef = new Firebase("https://<firebase root ref>/posts");
mFirebaseQuery = mFirebaseRef.orderByChild("author_id").equalTo(id); //`id` is a variable defined earlier

listAdapter = new FirebaseListAdapter<Post>(this, Post.class, android.R.layout.simple_list_item_, mFirebaseQuery) {
    @Override
    protected void populateView(View view, Post post) {
        String postTopic = post.getTopic();

        ((TextView) view.findViewById(android.R.id.text1)).setText(postTopic);
    }
};

listView = (ListView) findViewById(R.id.postsList);
listView.setAdapter(listAdapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String topic = String.valueOf(parent.getItemAtPosition(position));

        Toast.makeText(getApplicationContext(), "List Item Value: "+topic, Toast.LENGTH_LONG).show();
    }
});

而不是返回项目上显示的文本(如同使用ArrayAdapter的情况一样),String.valueOf返回对我使用的模型类的引用 - Post.class。<登记/> 输出如下:com.example.android.model.Post@a1e1874

在这种情况下,有人可以告诉我如何获取列表项的值吗?

1 个答案:

答案 0 :(得分:2)

AdapterView.getItemAtPosition()会返回Post个对象,所以:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Post post = (Post)parent.getItemAtPosition(position);

    String topic = post.getTopic();

    Toast.makeText(getApplicationContext(), "List Item Value: "+topic, Toast.LENGTH_LONG).show();
}