无法解决方法 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'
谢谢。
我正在尝试更改 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'
谢谢。