我遇到的问题是,当我尝试动态添加项目到我的微调器时,应用程序崩溃了。所以首先我从Strings.xml
添加一个数组R.array.restrictions
包含16项,因此我将每个键插入16,然后将其添加到下一个位置。然后我从firebase加载每个项目并将其添加到适配器,然后我设置适配器,所以在我看来它应该工作。任何想法导致崩溃的想法?说:
UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148)
感谢。
public void startSpinner(){
//built in Profiles
spinner = (Spinner) findViewById(R.id.spinnerProfiles);
adapter = ArrayAdapter.createFromResource(this, R.array.restrictions, android.R.layout.simple_spinner_item);
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
map = (Map<String, Object>) dataSnapshot.child("users").child(userID).getValue();
ArrayList<String> array = new ArrayList<>();
int x = 16;
for (Map.Entry<String,Object> entry : map.entrySet()) {
// key contains Profile Name
String key = entry.getKey();
adapter.insert(key, x);
x++;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Auto Generated Method
}
});
adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
答案 0 :(得分:2)
也许问题是您正在更改来自资源的阵列。这可能发生在您使用的列表不是由您创建的情况下。 您可以尝试以下方法:
ArrayList<CharSequence> array = new ArrayList<CharSequence>(Arrays.asList(context.getResources().getTextArray(R.array.restrictions)));
adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, array);