Android中利用GridView实现水平和垂直均有滚动条的(2)

public CellAdapter(Context c) {
            mContext = c;
            mInflater = LayoutInflater.from(c);
        }

public int getCount() {
            return (disp_rows * COLUMN_CNT);  //行数x列数为一共要显示多少个格子
        }

public Object getItem(int position) {
            return null; //do nothing now
        }

public long getItemId(int position) {
            return 0;
        }

// create a new ImageView for each item referenced by the Adapter
       // ImageView 放在了自定义的格子排版文件中,可以扩展使用,也就是说,格子显示的内容可以自己扩展
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            int row = getRow(position); //获取该格子对应表格的行和列
            int column = getColumn(position);
           
            ImageView imageView;
            if (convertView == null) {
                        convertView = mInflater.inflate(R.layout.imagecell, null);

//这里也可以不用自己定义的imagecell排版,而直接使用如TextView 或 ImageView等作为一个格子的显示,这里演示自定义排版是为了扩展使用

//imageView = new ImageView(mContext);  //直接使用ImageView


            }  //重用View,提高性能 else  {

// imageView = (ImageView) convertView;   //直接使用ImageView时


           }


            imageView = (ImageView) convertView.findViewById(R.id.CellImage); //如果直接使用ImageView,这一行不要
            imageView.setBackgroundColor(Color.BLACK);
            imageView.setImageResource(R.drawable.cellimage);
            imageView.refreshDrawableState();
                   
            return convertView;
        }
       
        private final int getRow(int position) {
            return (position / COLUMN_CNT);
        }
        private final int getColumn(int position) {
            return (position % COLUMN_CNT);
        }
    }
}

以上即可实现利用GridView实现二维表格效果,性能也不错,而且有垂直和水平均有滚动条。

优点:性能好,可以利用自定义Layout作为每个格子的显示,同时可以进一步扩展CellAdapter 的getView方法,根据convertView instanceOf ImageView 或 TextView实现有的格子里显示文本,有的格子里显示图片, 从而达到图片和文字同时显示的效果。


缺点:  每个格子的大小必须相同,同时显示图片和文字时,比较难调整显示效果,当然有耐心的同学可以试试,理论上可以做到图文同时显示,而且支持不同格子的大小显示(即有的格子显示大,有的格子显示小,根据格子显示的内容动态的显示格子的大小),搞出来的同学请告知我一声,我学习学习。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/wyywsy.html