Я создал два Spinner для отображения данных в моем приложении.В моем первом Spinner первый элемент списка всегда отображается напрямую, но во втором Spinner ничего не отображается, даже если я щелкаю элемент в раскрывающемся списке.Кто-нибудь может объяснить это поведение?
Вот код инициализации двух счетчиков:
projects = new Spinner(lexs);
projectAdapter = new ProjectAdapter();
projects.setAdapter(projectAdapter);
projects.setMinimumWidth(250);
projects.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
updateSpinners(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
});
projectsList = new Spinner(lexs);
projectsList.setMinimumWidth(250);
listAdapter = new ListAdapter();
projectsList.setAdapter(listAdapter);
projectsListLayer.addView(projectsList);
Проекты Spinner - это первый Spinner, который работает правильно.projectsList - это второй Spinner, который работает неправильно.Вот две реализации адаптеров:
private class ProjectAdapter implements SpinnerAdapter {
@Override
public View getDropDownView(int position, View arg1, ViewGroup arg2) {
TextView text = new TextView(lexs);
text.setText(allProjects.get(position).getName());
return text;
}
@Override
public int getCount() {
return allProjects.size();
}
@Override
public Object getItem(int position) {
return allProjects.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
TextView text = new TextView(lexs);
text.setText(allProjects.get(position).getName());
return text;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isEmpty() {
if (allProjects.size() == 0) {
return true;
} else {
return false;
}
}
@Override
public void registerDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
}
private class ListAdapter implements SpinnerAdapter {
@Override
public View getDropDownView(int position, View view, ViewGroup parent) {
TextView text = new TextView(lexs);
text.setText(allLists.get(position).getName());
return text;
}
@Override
public int getCount() {
return allLists.size();
}
@Override
public Object getItem(int position) {
return allLists.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text = new TextView(lexs);
text.setText(allLists.get(position).getName());
return text;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEmpty() {
if (allLists.size() == 0) {
return true;
} else {
return false;
}
}
@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
}
Здесь я приложил картину проблемы:
http://www.freeimagehosting.net/image.php?7684c157b8.png