列表视图中的替代文本和背景颜色
Alternate text and background color in listview
我是 android 的新手,我正在尝试显示替代文本颜色和替代背景颜色,但只有背景颜色有效。当我同时尝试两者时,出现错误。
这是 LogCat:
中显示的错误
android.widget.RelativeLayout cannot be cast to android.widget.TextView
这是我的适配器 class 中的 getView()
方法:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder view;
if(convertView==null)
{
inflater = (LayoutInflater)mcontext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
view = new ViewHolder();
convertView = inflater.inflate(R.layout.awards_layout_circle, null);
view.txtViewTitle = (TextView) convertView.findViewById(R.id.Text_View);
view.imgViewFlag = (ImageView) convertView.findViewById(R.id.profile_image);
convertView.setTag(view);
}
else
{
view = (ViewHolder) convertView.getTag();
}
if (position % 2 == 0){
convertView.setBackgroundResource(R.color.colorNav);
((TextView) convertView).setTextColor(Color.WHITE);
} else {
convertView.setBackgroundResource(R.color.colorWhite);
((TextView) convertView).setTextColor(Color.BLACK);
}
view.txtViewTitle.setText(listAward.get(position));
view.imgViewFlag.setImageResource(listFlag.get(position));
return convertView;
}
并且 awards_layout_circle.xml
用于项目列表:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="match_parent"
android:layout_height="250dp"
android:src="@drawable/bunnyarj"
android:layout_gravity="center"
app:civ_border_width="2dp"
app:civ_border_color="#FF000000"/>
<TextView
android:id="@+id/Text_View"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="18dp"
android:text="wsdwedwebd dwedbewd w"
android:fontFamily="sans-serif-medium"
android:layout_below="@+id/profile_image"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
您已经像这样更改了代码,
if (position % 2 == 0){
convertView.setBackgroundResource(R.color.colorNav);
((TextView) view.txtViewTitle).setTextColor(Color.WHITE);
} else {
convertView.setBackgroundResource(R.color.colorWhite);
((TextView) view.txtViewTitle).setTextColor(Color.BLACK);
}
您正在使用 ViewHolder
。没有理由将 convertView 转换为任何类型的对象(特别是错误的对象)。只需使用
view.txtViewTitle.setTextColor()
在你的 if/else
我是 android 的新手,我正在尝试显示替代文本颜色和替代背景颜色,但只有背景颜色有效。当我同时尝试两者时,出现错误。
这是 LogCat:
android.widget.RelativeLayout cannot be cast to android.widget.TextView
这是我的适配器 class 中的 getView()
方法:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder view;
if(convertView==null)
{
inflater = (LayoutInflater)mcontext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
view = new ViewHolder();
convertView = inflater.inflate(R.layout.awards_layout_circle, null);
view.txtViewTitle = (TextView) convertView.findViewById(R.id.Text_View);
view.imgViewFlag = (ImageView) convertView.findViewById(R.id.profile_image);
convertView.setTag(view);
}
else
{
view = (ViewHolder) convertView.getTag();
}
if (position % 2 == 0){
convertView.setBackgroundResource(R.color.colorNav);
((TextView) convertView).setTextColor(Color.WHITE);
} else {
convertView.setBackgroundResource(R.color.colorWhite);
((TextView) convertView).setTextColor(Color.BLACK);
}
view.txtViewTitle.setText(listAward.get(position));
view.imgViewFlag.setImageResource(listFlag.get(position));
return convertView;
}
并且 awards_layout_circle.xml
用于项目列表:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="match_parent"
android:layout_height="250dp"
android:src="@drawable/bunnyarj"
android:layout_gravity="center"
app:civ_border_width="2dp"
app:civ_border_color="#FF000000"/>
<TextView
android:id="@+id/Text_View"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="18dp"
android:text="wsdwedwebd dwedbewd w"
android:fontFamily="sans-serif-medium"
android:layout_below="@+id/profile_image"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
您已经像这样更改了代码,
if (position % 2 == 0){
convertView.setBackgroundResource(R.color.colorNav);
((TextView) view.txtViewTitle).setTextColor(Color.WHITE);
} else {
convertView.setBackgroundResource(R.color.colorWhite);
((TextView) view.txtViewTitle).setTextColor(Color.BLACK);
}
您正在使用 ViewHolder
。没有理由将 convertView 转换为任何类型的对象(特别是错误的对象)。只需使用
view.txtViewTitle.setTextColor()
在你的 if/else