莫为难 2016-01-05 11:47 采纳率: 0%
浏览 1496

Gridview的自适应高度后第一个item点击无效的问题

我在自己写GridView的时候,想弄自适应高度,然后第一个item点击无响应,
后来在网上找到方法,试了还是无效。我的代码如下:
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;

@SuppressLint("NewApi")
public class CameraAdapter extends BaseAdapter {
private GridView mGridView;
private String data[] = null;
private int imgId[] = null;
private Context context;
private LayoutInflater mInflater;

public CameraAdapter(GridView mGridView, String[] data, int[] imgId,
        Context context) {
    super();
    this.mGridView = mGridView;
    this.data = data;
    this.imgId = imgId;
    this.context = context;
    mInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {

    return data.length;
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

public class ViewHolder {
    TextView itemText;
    ImageView itemImage;

    public TextView getItemText() {
        return itemText;
    }

    public void setItemText(TextView itemText) {
        this.itemText = itemText;
    }

    public ImageView getItemImage() {
        return itemImage;
    }

    public void setItemImage(ImageView itemImage) {
        this.itemImage = itemImage;
    }

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder = null;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.grid_item, parent,false);
        // 得到GridView每一项的高度与宽度
        if (mGridView.getNumColumns() == 2) {
            convertView.setLayoutParams(new GridView.LayoutParams(
                    android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    mGridView.getHeight() / 2));
        } else if (mGridView.getNumColumns() == 3) {
            convertView.setLayoutParams(new GridView.LayoutParams(
                    android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    mGridView.getHeight() / 3));
        } else if (mGridView.getNumColumns() == 4) {
            convertView.setLayoutParams(new GridView.LayoutParams(
                    android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    mGridView.getHeight() / 4));
        }
        viewHolder = new ViewHolder();
        viewHolder.itemText = (TextView) convertView
                .findViewById(R.id.itemText);
        viewHolder.itemImage = (ImageView) convertView
                .findViewById(R.id.itemImage);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
        // 得到GridView每一项的高度与宽度
        if (mGridView.getNumColumns() == 2) {
            convertView.setLayoutParams(new GridView.LayoutParams(
                    android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    mGridView.getHeight() / 2));
        } else if (mGridView.getNumColumns() == 3) {
            convertView.setLayoutParams(new GridView.LayoutParams(
                    android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    mGridView.getHeight() / 3));
        } else if (mGridView.getNumColumns() == 4) {
            convertView.setLayoutParams(new GridView.LayoutParams(
                    android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    mGridView.getHeight() / 4));
        }
    }
    if (position == 0) {
        parent.postInvalidate();
    }
    viewHolder.itemText.setText(data[position]);
    viewHolder.itemImage.setImageResource(imgId[position]);

    //
    return convertView;
}

}

谁能指点下,到底还有哪里需要修改吗?

  • 写回答

2条回答

  • LZ_Luzhuo 博客专家认证 2016-01-05 16:35
    关注

    GridView有一些bug.
    为什么不用RecycleView?RecycleView能完美的自适应高度.
    http://blog.csdn.net/rozol/article/details/50225593

    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值