Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当firebase实时数据库中没有数据时,为什么不关闭progressDialog?_Java_Android_Firebase_Firebase Realtime Database_Firebaseui - Fatal编程技术网

Java 当firebase实时数据库中没有数据时,为什么不关闭progressDialog?

Java 当firebase实时数据库中没有数据时,为什么不关闭progressDialog?,java,android,firebase,firebase-realtime-database,firebaseui,Java,Android,Firebase,Firebase Realtime Database,Firebaseui,这是我的代码,当数据出现在firebase上并进入UI时,我的ProgressDialog是Disclose,但当firebase上没有数据时,它仍在处理,当我们点击屏幕时,它就消失了,所以我怎么能将其关闭? public void ShowData()//String data) { final ProgressDialog progressDialog =new ProgressDialog ( this ); progressD

这是我的代码,当数据出现在firebase上并进入UI时,我的ProgressDialog是Disclose,但当firebase上没有数据时,它仍在处理,当我们点击屏幕时,它就消失了,所以我怎么能将其关闭?

public void ShowData()//String data)
        {
           final ProgressDialog progressDialog =new ProgressDialog ( this );
            progressDialog.setMessage ( "Loading.." );
            progressDialog.show ();

        query1 = myRef.orderByChild ( "dateTime" ); // this is for Filter the data (The recently data you add is show on top of application)
        //  options=new FirebaseRecyclerOptions.Builder<modelClass> ().setQuery ( myRef,modelClass.class ).build ();//for retrive
        options = new FirebaseRecyclerOptions.Builder < modelClass > ().setQuery ( query1 , modelClass.class ).build ();//for search and retrive
        adapter = new FirebaseRecyclerAdapter < modelClass, MyVIewHolder > ( options ) {

            @Override
            protected void onBindViewHolder(@NonNull final MyVIewHolder holder , final int position , @NonNull modelClass model)  //for binding the View of recycler_view_item_layout
            {

           /* holder.college.setText ( model.getCollege () );
            holder.contact.setText ( model.getContact ()  );
            holder.time.setText ( model.getDateTime ());
            holder.food.setText ( model.getFood () );
            holder.name.setText ( model.getName () );*/



           progressDialog.dismiss ();
                    holder.setFoodPost ( model ); //for set all data to view



                //for set intent on Contact num View
                holder.contact.setOnClickListener ( new View.OnClickListener () {
                    @Override
                    public void onClick(View view) {
                        String phoneNum = holder.contact.getText ().toString ();
                        Intent in = new Intent ( Intent.ACTION_DIAL );
                        in.setData ( Uri.parse ( "tel:" + phoneNum ) );  // This ensures only Dial apps respond
                        if (in.resolveActivity ( getPackageManager () ) != null) {
                            startActivity ( in );

                        } else {
                            Toast.makeText ( MainActivity.this , "Failed" , Toast.LENGTH_SHORT ).show ();
                        }
                    }
                } );


                //for longPress on particular view(CardView)
                //for Delete the particular data when press long click on the View(CardView)
                holder.itemView.setOnLongClickListener ( new View.OnLongClickListener () {
                    @Override
                    public boolean onLongClick(View view) {
                        //for post_key we simply fetch that data postion which we want to delete
                        post_key = getRef ( position ).getKey ();
                        openDeleteWindow ();//this is a method for open the Delete Window
                        // Toast.makeText ( MainActivity.this , "Press" , Toast.LENGTH_SHORT ).show ();
                        return true;
                    }
                } );
public void ShowData()//字符串数据)
{
final ProgressDialog ProgressDialog=新建ProgressDialog(此);
progressDialog.setMessage(“加载…”);
progressDialog.show();
query1=myRef.orderByChild(“dateTime”);//用于筛选数据(最近添加的数据显示在应用程序顶部)
//options=new FirebaseRecyclerOptions.Builder().setQuery(myRef,modelClass.class).build();//用于检索
options=new FirebaseRecyclerOptions.Builder().setQuery(query1,modelClass.class).build();//用于搜索和检索
适配器=新的FirebaseRecyclerAdapter(选项){
@凌驾
受保护的void onBindViewHolder(@NonNull final MyVIewHolder holder,final int position,@NonNull modelClass model)//用于绑定回收器的视图\视图\项目\布局
{
/*holder.college.setText(model.getCollege());
holder.contact.setText(model.getContact());
holder.time.setText(model.getDateTime());
holder.food.setText(model.getFood());
holder.name.setText(model.getName())*/
progressDialog.disclose();
holder.setFoodPost(model);//用于设置要查看的所有数据
//用于在Contact num视图上设置意图
holder.contact.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串phoneNum=holder.contact.getText().toString();
意向输入=新意向(意向动作拨号);
in.setData(Uri.parse(“tel:+phoneNum”);//这确保只有拨号应用程序响应
if(in.resolveActivity(getPackageManager())!=null){
星触觉(in);
}否则{
Toast.makeText(MainActivity.this,“失败”,Toast.LENGTH_SHORT).show();
}
}
} );
//对于特定视图上的长按(CardView)
//要在长按时删除特定数据,请单击视图(CardView)
holder.itemView.setOnLongClickListener(新视图。OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图){
//对于post_key,我们只需获取要删除的数据post
post_key=getRef(position).getKey();
openDeleteWindow();//这是打开删除窗口的方法
//Toast.makeText(MainActivity.this,“Press”,Toast.LENGTH_SHORT).show();
返回true;
}
} );

会为需要在视图中显示的每个项目调用FirebaseUI适配器的
onBindViewHolder
。如果没有与视图中显示的引用/查询匹配的数据,则永远不会调用适配器的
onBindViewHolder

因此,如果使用
onBindViewHolder
隐藏
progressDialog
,则只有在存在项目时才会隐藏
progressDialog
。如果没有项目,则不会调用
onBindViewHolder
,并且
progressDialog
将保持可见

要隐藏
progressDialog
,而不管是否有项目,您需要覆盖FirebaseUI适配器的
onDataChanged
方法并将其隐藏在那里:

adapter = new FirebaseRecyclerAdapter < modelClass, MyVIewHolder > ( options ) {
    @Override
    public void onDataChanged() {
        progressDialog.hide();
    }

    @Override
    protected void onBindViewHolder(@NonNull final MyVIewHolder holder , final int position , @NonNull modelClass model) {
        ...
adapter=new FirebaseRecyclerAdapter(选项){
@凌驾
公共无效onDataChanged(){
progressDialog.hide();
}
@凌驾
受保护的无效onBindViewHolder(@NonNull final MyVIewHolder holder,final int position,@NonNull modelClass model){
...
由于每次从Firebase完全接收到更新时都会调用
onDataChanged
,因此在有数据和没有数据时都会调用它

另见:


如果您没有进入绑定视图的数据,请尝试日志,您可以轻松找到您的问题