我正在使用带有 ArrayAdapter 的列表作为微调器。但是在选择微调器时,W/InputEventReceiver 记录输入事件接收器已经被释放
适配器在使用方法 .createFromResource() 和静态字符串数组创建时工作正常,但似乎不适用于字符串列表。
这是我的 Activity 代码
package club.bms.keshav.readersreserve;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.List;
public class TempActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private List<CharSequence> userList = new ArrayList<>();
private ArrayAdapter<CharSequence> adapter;
private Spinner spinner;
private static final String TAG = "TempActivity";
private String temp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_temp);
userList.clear();
DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference();
rootReference.child(ConstantFields.DATABASE_USER_LIST).addValueEventListener(new ValueEventListener() {
String temp;
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
{
temp = dataSnapshot1.child(ConstantFields.DATABASE_USER_NAME).getValue(String.class);
userList.add(temp);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
spinner = (Spinner) findViewById(R.id.tempSpinner);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, userList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("SELECT THE CURRENT HOLDER OF THE BOOK");
Log.d(TAG, "onCreate: Adapter Set");
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "onItemSelected: ");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d(TAG, "onNothingSelected: ");
}
}
在 itemselectedlistener 方法中没有打印任何日志语句。 这是在单击微调器时打印的日志语句。
W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
微调器只是在点击时展开。
最佳答案
rootReference.child(ConstantFields.DATABASE_USER_LIST).addValueEventListener(new ValueEventListener() {
String temp;
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
{
temp = dataSnapshot1.child(ConstantFields.DATABASE_USER_NAME).getValue(String.class);
userList.add(temp);
if(adapter!=null){
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
关于java - 为什么单击微调器时调试报告会记录 "Attempted to finish an input event but the input event receiver has already been disposed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994441/