我正在創建一個適配器,該適配器應該用汽車圖像和型號名稱填充GridView。我已經創建了一個網格項目作爲自己的XML文件,具有所需的小部件(ImageView和TextView)。但是,我似乎無法誇大我的CarsGridViewItem
實例中的視圖。如果我從我的適配器的getView
-方法膨脹視圖,它會起作用。從實例不起作用的充氣視圖
如果我膨脹CarsGridViewItem
實例中的視圖,會發生什麼情況,是因爲我看不到應該膨脹的視圖。
下面是我CarsGridViewItem
類
public class CarsGridViewItem extends RelativeLayout {
private Car car;
private ImageView carImg;
private TextView nameTxt;
public CarsGridViewItem(Car car, Context context) {
super(context);
this.car = car;
inflate(getContext(), R.layout.fragment_cars_grid_item, this);
findViews();
setupViews();
}
private void findViews() {
this.carImg = (ImageView)findViewById(R.id.car_image);
this.nameTxt = (TextView)findViewById(R.id.car_name);
}
private void setupViews(){
this.car.loadImageIntoView(this.carImg);
this.nameTxt.setText(this.car.getName());
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
@Override
protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
}
}
而且我的適配器
public View getView(int position, View convertView, ViewGroup parent){
return new CarsGridViewItem(cars.get(position), mContext);
/* The code below works!
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout view = (RelativeLayout) inflater.inflate(R.layout.fragment_cars_grid_item, null);
ImageView carImg = (ImageView)view.findViewById(R.id.car_image);
cars.get(position).loadImageIntoView(carImg);
TextView nameTxt = (TextView)view.findViewById(R.id.car_name);
nameTxt.setText(cars.get(position).getName());
return view;*/
}
我在這裏做一些錯誤的getView
- 方法,但我似乎無法找出什麼。所有關於膨脹視圖主題的例子都是這樣的!
您可以調試並查看視圖的佈局方式。 '顯示佈局邊界「或」工具 - > Android - >佈局檢查器「。在我看來,你的觀點有0高度。 – azizbekian
偉大的提示與佈局督察。這表明'CarsGridViewItem'具有寬度和高度,而膨脹的RelativeLayout沒有寬度和高度!什麼可能導致這個? –
也發佈'CarsGridViewItem'類。 – azizbekian