2013-05-09 71 views
1

您好我正在开发一个应用程序在Android中,我使用的子类延伸BaseExpandableListAdapter。现在我有问题要结合ImageViewTextView在显示的列表中。昨天我发现这个链接在stackoverflow,帮助我做出这种组合。将imageView和TextView结合在一个列表中

Overlay text over imageview in framelayout programmatically - Android

所以它工作正常! - 直到我点击一个listItem。应用程序chrash和logcat告诉我: "android.widget.RelativeLayout" cannot be cast to android.widget.ImageView.这个例外是getGroupView(),它延伸到BaseExpandableListAdapter。为什么会发生? (RelativeLayout延伸View)。

我完全错误的方式,当我尝试返回RelativeLayout而不是ImageView

下面是getGroupView我的代码(我是一个有点乱,因为我在teststate):

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; 
} 

回答

0

声明ImageView row = (ImageView) convertView;给出,因为ü[R试图转换RelativeLayoutImageView例外。

您必须getViewGroup()方法返回convertView但你返回的RelativeLayout即return rLayout;

解决方案:

添加ImageViewTextView一个RelativeLayout内。通过在getView()方法内对其进行膨胀来设置ListItem的布局,并将充气布局分配给convertView。在getView()方法中返回convertView;

+0

谢谢,我也在这个方向思考,但认为有可能做一个演员莫名其妙..也许是对象?但我现在通过使用LayoutInflater并将imageview和textview放入xml文件来解决此问题。 – 2013-05-10 11:42:59

相关问题