Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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 &引用;setOnItemSelectedListener();在微调器中选择项目时未调用_Java_Android_Spinner - Fatal编程技术网

Java &引用;setOnItemSelectedListener();在微调器中选择项目时未调用

Java &引用;setOnItemSelectedListener();在微调器中选择项目时未调用,java,android,spinner,Java,Android,Spinner,我正在创建一个用于酒店管理的android应用程序 我想以微调器的形式向用户显示可用房间的数量 我正在谷歌firebase中存储详细信息(房间号、姓名地址等) 如果用户是第一次登录应用程序,则spinner中的所有房间号都应可见。但如果用户已经预订了房间,则该房间号不应在微调器中可见 以下是java代码: documentReference.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {

我正在创建一个用于酒店管理的android应用程序

我想以微调器的形式向用户显示可用房间的数量

我正在谷歌firebase中存储详细信息(房间号、姓名地址等)

如果用户是第一次登录应用程序,则spinner中的所有房间号都应可见。但如果用户已经预订了房间,则该房间号不应在微调器中可见

以下是java代码:

documentReference.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
           @Override
           public void onSuccess(DocumentSnapshot documentSnapshot) {
               if(documentSnapshot.exists()){
                   roomNumberDocument=documentSnapshot.getString("RoomNumber");
                   if(roomNumberDocument!=null){
                       for (int i = 100; i < 111; i++) {
                           if(Integer.parseInt(roomNumberDocument)==i){
                               continue;
                           }
                           roomNumbersList.add(Integer.toString(i));
                       }
                   }else{
                       //room numbers
                       roomNumbersList.add("100");
                       roomNumbersList.add("101");
                       roomNumbersList.add("102");
                       roomNumbersList.add("103");
                       roomNumbersList.add("104");
                       roomNumbersList.add("105");
                       roomNumbersList.add("106");
                       roomNumbersList.add("107");
                       roomNumbersList.add("108");
                       roomNumbersList.add("109");
                       roomNumbersList.add("110");
                   }

               }
           }
       });
以下是微调器的单击侦听器:

spinnerRoomNumber.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                strRoomNumber= adapterView.getItemAtPosition(i).toString();
                Toast.makeText(context, ""+strRoomNumber, Toast.LENGTH_LONG).show();
                Log.i(TAG, strRoomNumber);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
spinnerRoomNumber.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
stroomNumber=adapterView.getItemAtPosition(i.toString();
Toast.makeText(上下文“”+stroomNumber,Toast.LENGTH_LONG.show();
Log.i(标签、序号);
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
问题是,如果我在微调器中选择任何项,则不会调用
setOnItemSelectedListener()

因此,
strRoomNumber
将变为null。我将使用
stroomnumber
将其存储在firebase数据库中

这是我的全部


可能有什么问题?

您的
setOnItemSelectedListner
必须如下所示:

 spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view,
                int i, long id) {
            strRoomNumber = adapterView.getItemAtPosition(i).toString;
            if (item != null) {
                Toast.makeText(MainActivity.this, item.toString(),
                        Toast.LENGTH_SHORT).show();
            }
            Toast.makeText(MainActivity.this, ""+strRoomNumber,  Toast.LENGTH_LONG).show();
            Log.i(TAG, strRoomNumber);

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View、,
int i,long id){
stroomNumber=adapterView.getItemAtPosition(i).toString;
如果(项!=null){
Toast.makeText(MainActivity.this,item.toString(),
吐司。长度(短)。show();
}
Toast.makeText(MainActivity.this,“+stroomNumber,Toast.LENGTH_LONG.show();
Log.i(标签、序号);
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
也请查看此以了解更多信息

您的
setOnItemSelectedListner
必须如下所示:

 spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view,
                int i, long id) {
            strRoomNumber = adapterView.getItemAtPosition(i).toString;
            if (item != null) {
                Toast.makeText(MainActivity.this, item.toString(),
                        Toast.LENGTH_SHORT).show();
            }
            Toast.makeText(MainActivity.this, ""+strRoomNumber,  Toast.LENGTH_LONG).show();
            Log.i(TAG, strRoomNumber);

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View、,
int i,long id){
stroomNumber=adapterView.getItemAtPosition(i).toString;
如果(项!=null){
Toast.makeText(MainActivity.this,item.toString(),
吐司。长度(短)。show();
}
Toast.makeText(MainActivity.this,“+stroomNumber,Toast.LENGTH_LONG.show();
Log.i(标签、序号);
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
也请查看此以了解更多信息

尝试将用于设置适配器的代码移动到
documentReference.get().addOnSuccessListener……
之前,并在onSuccess方法中,将其添加为最后一行:
AdapterRomNumbers.DataSnotifyetChanged()


说明:适配器未正确更新,因为对firebase的调用是一个异步过程。

尝试将用于设置适配器的代码移到documentReference.get()之前。addOnSuccessListener……
并在onSuccess方法中,将其添加为最后一行:
AdapterRomNumbers.notifyDataSetChanged()


说明:适配器未正确更新,因为对firebase的调用是一个异步过程。

上述代码不起作用!!在我的代码中,
setOnItemSelectedListner
未被调用上述代码无效!!在my code
setOnItemSelectedListner
未被调用的情况下,请将用于设置适配器的代码移到documentReference.get()之前。addOnSuccessListener……
并在onSuccess方法中,将其添加为最后一行:
AdapterRomNumbers.notifyDataSetChanged()成功了!您可以将此作为答案吗?请尝试将用于设置适配器的代码移动到
documentReference.get().addOnSuccessListener……
之前,并在onSuccess方法中添加此代码作为最后一行:
AdapterRomNumbers.notifyDataSetChanged()成功了!你能回答这个问题吗?hey Can help here-->hey Can help here-->