Android自定义微调适配器不显示内容
问题描述:
我有一个小问题,我的微调不会崩溃应用程序,但同时不会显示我的自定义适配器。我花了很多年不试图看问题出在哪里,但我仍然无法找到它,任何人都可以发现我的错误?Android自定义微调适配器不显示内容
我的适配器
public class AccomdationAdapter extends ArrayAdapter <String> {
Context c;
String[] roomType;
int[] images;
public AccomdationAdapter(Context ctx, String[] roomType, int[] images) {
super(ctx, R.layout.custom_room_spinner);
this.c=ctx;
this.roomType=roomType;
this.images=images;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater inflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.custom_room_spinner,null);
}
TextView roomTypes = (TextView) convertView.findViewById(R.id.txtRoom);
ImageView roomIcon = (ImageView) convertView.findViewById(R.id.imgRoom);
//set data
roomTypes.setText(roomType[position]);
roomIcon.setImageResource(images[position]);
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater inflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.custom_room_spinner,null);
}
TextView roomTypes = (TextView) convertView.findViewById(R.id.txtRoom);
ImageView roomIcon = (ImageView) convertView.findViewById(R.id.imgRoom);
//set data
roomTypes.setText(roomType[position]);
roomIcon.setImageResource(images[position]);
return convertView;
}
}
主要活动
Spinner roomTypeSpinner;
String[]roomType = {"Single", "Double"};
int[] roomimages = {R.drawable.ic_menu_camera, R.drawable.ic_menu_gallery};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
roomTypeSpinner = (Spinner) findViewById(R.id.spinner);
AccomdationAdapter adapter = new AccomdationAdapter(this, roomType, roomimages);
roomTypeSpinner.setAdapter(adapter);
自定义房间微调XML
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/imgRoom"
android:background="@drawable/abc_ic_star_black_16dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/txtRoom"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/imgRoom"
android:textSize="50dp" />
</RelativeLayout>
内容主要
<Spinner
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/spinner" />
答
适配器已经有了方法,只需添加一个getCount
:
public class AccomdationAdapter extends ArrayAdapter <String> {
Context c;
String[] roomType;
int[] images;
@Override
public int getCount() {
return (roomType == null ? 0 : roomType.length);
}
+1
完美答案非常感谢你 – james
答
在您的自定义arrayAdapter中,您应该传递项目列表以填充到构造函数super实现。 这样做:
public AccomdationAdapter(Context ctx, String[] roomType, int[] images) {
super(ctx, R.layout.custom_room_spinner,roomType);
this.c=ctx;
this.roomType=roomType;
this.images=images; }
+0
另一个绝妙的答案 – james
我建议重写'公众诠释getCount将()'方法在适配器中,返回'roomType .length' – NSimon
嗨尼古拉斯你能否提供一个例子 – james