无法解决方法 getResource().getColor() 错误

cannot resolve method getResource().getColor() error

我正在尝试更改 java 代码中的文本颜色(我不想在 xml 中更改它)并且我知道我需要调用 getResource()。但我得到错误 "cannot resolve method getResource()"。 我尝试声明上下文并使用上下文来调用 getResource() 并且我得到空值。

我的java代码如下:

public class NewsAdapter extends BaseAdapter implements SectionIndexer, HeadListView.HeaderAdapter, OnScrollListener{
......

@Override
    public View getView(int position, View convertView,       ViewGroup parent) {
    .......
    NewsEntity news = getItem(position);
        mHolder.item_title.setText(news.getTitle());
        mHolder.comment_count.setText(news.getCommentNum() + "评论");
        mHolder.publish_time.setText(DateTools.getTimeAgo(news.getPublishTime()));//+ "小时前");//getTimefromLong(news.getPublishTime()) + "小时前");
        List<String> imgUrlList = news.getPicList();
        mHolder.popicon.setVisibility(View.INVISIBLE);
        mHolder.comment_count.setVisibility(View.VISIBLE);
        mHolder.right_padding_view.setVisibility(View.VISIBLE);
        if(imgUrlList !=null && imgUrlList.size() !=0){
           // if(imgUrlList.size() == 1){

                    //mHolder.large_image.setVisibility(View.GONE);
                    mHolder.left_image.setVisibility(View.VISIBLE);

            Picasso.with(activity.getBaseContext()).load(imgUrlList.get(0)).fit().into(mHolder.left_image);
                   // imageLoader.displayImage(imgUrlList.get(0), mHolder.left_image, options);
                   // imageLoader.displayImage(imgUrlList.get(2), mHolder.item_image_2, options);

        }else{
            mHolder.left_image.setVisibility(View.GONE);
            //mHolder.item_image_layout.setVisibility(View.GONE);
        }

        if(news.getNews_colour() == 0){
            mHolder.item_title.setTextColor(getResources().getColor(R.color.black));
        }else if(news.getNews_colour() == 1){
            mHolder.item_title.setTextColor(getResources().getColor(R.color.red));
        }
        
......

    }
}

我的问题是如何更改 java 代码下方的文本颜色:

        if(news.getNews_colour() == 0){
        mHolder.item_title.setTextColor(getResources().getColor(R.color.black));
    }else if(news.getNews_colour() == 1){
        mHolder.item_title.setTextColor(getResources().getColor(R.color.red));
    }

我是这方面的新手,我们将不胜感激。提前致谢!

您可以从您的视图中获取上下文:

mHolder.item_title.setTextColor(mHolder.item_title.getContext().getResources().getColor(R.color.black));

您需要通过构造函数或 setter 将上下文传递给 NewsAdapter。然后调用 context.getResources.getColor(R.color.black)

干杯!

以下方法可能对您有所帮助。

您需要使用 ContextCompat.getColor(),它是 Support V4 库的一部分(因此它适用于所有以前的 API)。

ContextCompat.getColor(context, R.color.my_color)

您可以通过将以下内容添加到应用程序中的依赖项数组来添加 Support V4 库 build.gradle:

compile 'com.android.support:support-v4:23.0.1'

谢谢。