【问题标题】:i want to fetch data full in a single Textview from firebase database我想从 firebase 数据库的单个 Textview 中获取完整的数据
【发布时间】:2020-02-22 23:04:01
【问题描述】:

我创建了一个条形码扫描仪应用程序,它读取条形码 ID 并需要将输出作为语音输出。为了阅读所有内容,我需要在一个 TextView 中一起获取所有数据。我尽我所能从数据库中添加查询。但它只在TextView 中显示为com.google.firebase.database.Query@9fc9e4d,而我的应用程序TTS 引擎清楚地读取了它。但我需要将其设置为数据库中单个TextView 下的所有数据才能说出。请帮我????这里只附上结果处理方法。

@Override 
public void handleResult(Result result) { final String scanResult = result.getText();

    databasefetch = FirebaseDatabase.getInstance().getReference("save");
    databasefetch.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {



            setContentView(R.layout.activity_second);
            TextView text = (TextView) findViewById(R.id.textView3);
            String tst = databasefetch.child("save").orderByChild("id").equalTo(scanResult).toString();
            text.setText(tst);



            //text to speech
            String  toSpeak=text.getText().toString();
            //Toast.makeText(getApplicationContext(),toSpeak,Toast.LENGTH_SHORT).show();
            txt.speak(toSpeak,TextToSpeech.QUEUE_FLUSH,null);


        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

【问题讨论】:

  • 你能指出你想从数据库中得到哪些文本吗?还有为什么你在firebase操作中添加setContentView而不是onCreate
  • 这是一个用于百叶窗的应用程序,它由手势处理,因此细节、名称、价格应该显示在 textview 上,以便一起说出来
  • 扫描仪获取条形码 id 并需要使用我在数据库中写入的数据库 id 检查 id。

标签: java android firebase-realtime-database


【解决方案1】:

试试这样的

@Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
            // TODO: handle the post
            YourModelClass object = postSnapshot.getValue(YourModelClass.class);
            text.setText(object.getId().equalsIgnoreCase(scanResult) ? object.getDescription() : "");
        }
    }

【讨论】:

    【解决方案2】:

    无需运行多个查询来过滤基于id 的数据。检查以下:

    databasefetch = FirebaseDatabase.getInstance().getReference("save");
    databasefetch.orderByChild("id").equalTo(scanResult).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    
            String  toSpeak = "";
    
            for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
    
                String name = childSnapshot.child("name").getValue(String.class);
                String price = childSnapshot.child("price").getValue(String.class);
                String details = childSnapshot.child("details").getValue(String.class);
    
                toSpeak = name + ", " + price + ", " + details;
            }
    
            text.setText(toSpeak);
    
            txt.speak(toSpeak, TextToSpeech.QUEUE_FLUSH,null);
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
    
        }
    });
    

    【讨论】:

    • 先生,现在文本视图中没有显示任何内容...请您帮我检查一下。?
    • 我不知道id你用什么。尝试使用databasefetch.orderByChild("id").equalTo("qwer") 并检查
    • Asaduzzaman 先生,感谢您的宝贵回答。代码确实对我有用,但我用另一个代码编辑了你的代码。然后它工作顺利。所以感谢您解决这个问题。非常感谢....!
    • @jomson-pullokaran,有什么问题吗?请接受答案,以便其他人发现它有帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多