【问题标题】:Grid View Custom View issue : java.lang.ClassCastException?网格视图自定义视图问题:java.lang.ClassCastException?
【发布时间】:2014-11-15 08:55:25
【问题描述】:

我正在编写一个应用程序,其中要求以两列顺序绘制可绘制。 这是我的 Adapter.getView(..) 实现:

public View getView(int position, View convertView, ViewGroup parent) {

            ImageView imageView = null;

            if (convertView == null) {  // if it's not recycled, initialize some attributes

                View view = inflater.inflate(R.layout.grid_item, parent);
                imageView = (ImageView) view.findViewById(R.id.picture);

            } else {
                imageView = (ImageView) convertView;
            }

            imageView.setImageResource(drawable[position]);
            return imageView;
        }

但是在转换它时,它会响应以下错误日志:

E/AndroidRuntime(10419): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
E/AndroidRuntime(10419):    at android.widget.GridView.onMeasure(GridView.java:1056)
E/AndroidRuntime(10419):    at android.view.View.measure(View.java:15356)

任何建议我在这里缺少什么?

【问题讨论】:

    标签: android gridview classcastexception


    【解决方案1】:

    这样试试,加return convertView;

        @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final ViewHolder mHolder;
    
        if (convertView == null) {
    
            convertView = mInflater.inflate(R.layout.grid_item, null);
            mHolder = new ViewHolder();
            mHolder.imageView = (ImageView) convertView.findViewById(R.id.picture);
            convertView.setTag(mHolder);
    
        } else {
            mHolder = (ViewHolder) convertView.getTag();
        }
    
        try {
         imageView.setImageResource(drawable[position]);
    
        } catch (Exception e) {
            // TODO: handle exception
        }
    
        return convertView;
    }
    
    private class ViewHolder {
        private ImageView imageView;
        }
    

    【讨论】:

      【解决方案2】:

      您正在返回 imageView 而不是您膨胀的视图 写这个。

        return view ;
      

      【讨论】:

        【解决方案3】:

        只需更改即可。

         if (convertView == null) {  // if it's not recycled, initialize some attributes
        
              convertView = inflater.inflate(R.layout.grid_item, parent);
              imageView = (ImageView) convertView.findViewById(R.id.picture);
        
         } else {
               imageView = (ImageView) convertView;
               }
        
         imageView.setImageResource(drawable[position]);
         return convertView;
        

         View view = convertView ;
        
          if (view == null) {  // if it's not recycled, initialize some attributes
        
              view = inflater.inflate(R.layout.grid_item, parent);
              imageView = (ImageView) view.findViewById(R.id.picture);
        
         } else {
              imageView = (ImageView) view;
         }
        
         imageView.setImageResource(drawable[position]);
         return view ;
        

        【讨论】:

          【解决方案4】:

          您的视图似乎已附加到父级,试试这个:

          view = inflater.inflate(R.layout.grid_item, parent, false);
          

          return view;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-02
            • 1970-01-01
            相关资源
            最近更新 更多