30/09/2018, 17:57

Lỗi về GirdView trong Android

Mình có viết đoạn code MyAdapter kế thừa BaseAdapter như phía dưới, nhưng không hiểu làm sao chạy trên máy ảo vẫn lỗi, khi mình comment cái đoạn setLayoutParams thì chạy bình thường nhưng ảnh to quá, có bác nào chỉ giúp với.

public class MyAdapter extends BaseAdapter {
    public Integer[] hinhAnh = { R.drawable.ic_1, R.drawable.ic_2, R.drawable.ic_3, R.drawable.ic_4, R.drawable.ic_5,
            R.drawable.ic_6, R.drawable.ic_7, R.drawable.ic_8, R.drawable.ic_9 };
    Context context;

    public MyAdapter(Context context) {
        this.context = context;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return hinhAnh.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView image;
        if (convertView == null) {
            image = new ImageView(context);
            image.setScaleType(ImageView.ScaleType.CENTER_CROP);
            image.setLayoutParams(new GridView.LayoutParams(80, 80));
            image.setPadding(8, 8, 8, 8);

        } else{
            image=(ImageView) convertView;
        }

        image.setImageResource(hinhAnh[position]);
        return image;
    }

}

Set sô cột cho grid view thay vì tạo ra một kích thước fix cứng như thế này.

Hỉnh Lê viết 20:06 ngày 30/09/2018

Là sao bạn, nói rõ hơn dc không, mình chưa hiểu lắm

viết 20:13 ngày 30/09/2018
new GridView.LayoutParams(80, 80)

Dòng này thực hiện setWidth() và setHeight cho ImageView của em. Nhưng lỗi không phải ở chỗ fix cứng giá trị. Có khả năng là lỗi liên quan tới set LayoutParam cho ViewGroup. Ví dụ như RelativeLayout thì không thể set Params của LinearLayout được.

Em có thể post đoạn log bị lỗi lên đây.
Hoặc download project này về rồi import vào, anh chỉ build lại từ GitHub của ông nào đó thôi.
http://www.mediafire.com/download/sbcrau1me8akfbs/HelloGridView.zip

Hỉnh Lê viết 20:11 ngày 30/09/2018

Đây anh, đoạn log hơi dài, có người bảo em nên thêm android:largeHeap=“true” vào thẻ Application

new GridView.LayoutParams(80, 80)

Dòng này thực hiện setWidth() và setHeight cho ImageView của em. Nhưng lỗi không phải ở chỗ fix cứng giá trị. Có khả năng là lỗi liên quan tới set LayoutParam cho ViewGroup. Ví dụ như RelativeLayout thì không thể set Params của LinearLayout được.

Em có thể post đoạn log bị lỗi lên đây.Hoặc download project này về rồi import vào, anh chỉ build lại từ GitHub của ông nào đó thôi.http://www.mediafire.com/download/sbcrau1me8akfbs/HelloGridView.zip

Vấn đề đúng là không nằm ở việc fix cứng giá trị nhưng mà việc fix cứng này là không tốt.
Còn báo chung chung thế này khó lắm.

Bài liên quan
0