1

嗨,我正在 android 中开发一个应用程序,我使用扩展的子类BaseExpandableListAdapter。现在我有问题要组合ImageViewTextView在显示的列表中。昨天我在 stackoverflow 上找到了这个链接,它帮助我进行了这种组合。

以编程方式在 framelayout 中的 imageview 上覆盖文本 - Android

所以它工作正常!- 直到我点击一个listItem。应用程序 chrash 和 logcat 告诉我 "android.widget.RelativeLayout" cannot be cast to android.widget.ImageView.这个异常出现 getGroupView()在扩展类中BaseExpandableListAdapter。为什么会这样?(RelativeLayout扩展View)。

当我尝试返回 aRelativeLayout而不是a 时,我是否完全走错了路ImageView

这是我的代码getGroupView(我有点乱,因为我处于测试状态):

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

  ImageView row = (ImageView) convertView;

RelativeLayout rLayout = new RelativeLayout(mContext);
  LayoutParams rlParams = new LayoutParams(LayoutParams.FILL_PARENT
            ,LayoutParams.FILL_PARENT); 
    rLayout.setLayoutParams(rlParams);


if(row == null) {

    row = new ImageView(mContext);
}

row.setImageResource(R.drawable.ic_launcher);

row.setScaleType(ImageView.ScaleType.FIT_START);


RelativeLayout.LayoutParams tParams = new RelativeLayout.LayoutParams
        (LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
tParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
tParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
TextView text=new TextView(mContext); 
text.setText("GOLDEN Gate"); 
text.setTextColor(Color.WHITE);                            
text.setTypeface(Typeface.DEFAULT_BOLD);
text.setLayoutParams(tParams);



rLayout.addView(row);
rLayout.addView(text);

return rLayout;
}
4

1 回答 1

0

该语句ImageView row = (ImageView) convertView;给出了异常,因为您试图将 转换RelativeLayoutImageView.

您必须返回convertViewingetViewGroup()方法,但您返回的是 RelativeLayout 即,return rLayout;

解决方案 :

在 a中添加一个ImageView和。通过在 getView() 方法中对 ListItem 进行膨胀来设置该布局,并将膨胀的布局分配给 convertView。在 getView() 方法中返回 convertView;TextViewRelativeLayout

于 2013-05-09T09:18:43.720 回答