2017-02-28 49 views
0

我正在創建一個適配器,該適配器應該用汽車圖像和型號名稱填充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 - 方法,但我似乎無法找出什麼。所有關於膨脹視圖主題的例子都是這樣的!

+0

您可以調試並查看視圖的佈局方式。 '顯示佈局邊界「或」工具 - > Android - >佈局檢查器「。在我看來,你的觀點有0高度。 – azizbekian

+0

偉大的提示與佈局督察。這表明'CarsGridViewItem'具有寬度和高度,而膨脹的RelativeLayout沒有寬度和高度!什麼可能導致這個? –

+0

也發佈'CarsGridViewItem'類。 – azizbekian

回答

1

請從CarsGridViewItem刪除onMeasure()onLayout()方法或正確實施它們,因爲您現在沒有正確覆蓋它們。

您已覆蓋onLayout()並且沒有做任何事情,因此沒有任何內容正在佈置。讓超類爲你佈置視圖。

+0

我甚至不知道爲什麼我重寫了onLayout方法,認爲我的IDE由於某種原因添加了它......非常好,非常感謝! –