【问题标题】:How do I link a listview element with Firebase object?如何将 listview 元素与 Firebase 对象链接?
【发布时间】:2020-06-01 09:12:27
【问题描述】:

在主要活动中,有一个列表视图,显示使用displayAllItems() 方法推送到数据库的所有对象:

private void displayAllItems(){
        ListView listOfItems = (ListView) findViewById(R.id.list_of_items);
        FirebaseListAdapter<Item> adapter = new FirebaseListAdapter<Item>(this, Item.class, R.id.list_item, FirebaseDatabase.getInstance().getReference()) {
            @Override
            protected void populateView(View v, Item model, int position) {
                TextView type, subtype, name;
                type = v.findViewById(R.id.item_type);
                subtype = v.findViewById(R.id.item_subtype);
                name = v.findViewById(R.id.item_name);

                type.setText(model.getType());
                subtype.setText(model.getSubtype());
                name.setText(model.getName());
            }
        };
        listOfItems.setAdapter((adapter));
    }

列表视图仅显示来自 Item 类对象的 3 个字段的信息。如何通过在列表视图中单击某个项目来获取有关该项目的其他信息,以便我可以在新活动中使用这些数据?

【问题讨论】:

  • 你检查过答案了吗?
  • 要测试解决方案,我应该将我的数据填充到 listview。我在问题中提出的方法已损坏
  • 为什么坏了
  • 我刚刚修好了。立即实施您的解决方案
  • 但还有一个问题:如何更改数据库中对象的字段?

标签: java android firebase listview


【解决方案1】:

使用setOnItemClickListener点击listView中的每一项:

listOfItems.setOnItemClickListener(new OnItemClickListener(){   
    @Override
    public void onItemClick(AdapterView<?>adapter,View v, int position){
        Item item = (Item) adapter.getItemAtPosition(position);

        Intent intent = new Intent(CurrentActivity.this, NewActivity.class);    
        intent.putExtra("type",item.getType());
        startActivity(intent);
    }
});

getItemAtPosition() 将获取与列表中指定位置关联的数据。然后使用您班级的getters 获取数据并使用intent 将其发送到下一个活动

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 2011-10-06
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多