【问题标题】:Alternate text and background color in listview列表视图中的替代文本和背景颜色
【发布时间】:2015-12-28 09:40:32
【问题描述】:

我是 android 新手,我正在尝试显示替代文本颜色和替代背景颜色,但只有背景颜色有效。当我尝试两者时,我得到了错误。
这是 LogCat 中显示的错误:

android.widget.RelativeLayout 无法转换为 android.widget.TextView

这是我的适配器类中的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>

【问题讨论】:

  • ((TextView) convertView).setTextColor(Color.WHITE);在这里,您将类型为相对布局的 convertView 转换为给出错误的文本视图

标签: android android-listview android-adapter android-color


【解决方案1】:

您正在使用ViewHolder。没有理由将 convertView 转换为任何类型的对象(尤其是错误的对象)。只需使用

view.txtViewTitle.setTextColor()

在你的 if/else 中

【讨论】:

    【解决方案2】:

    你已经改变了这样的代码,

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

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2011-11-18
      相关资源
      最近更新 更多