美好的一天,在我的自定义适配器类中覆盖了isEnabled()之后,我希望能够为isEnabled()返回false的某些项目更改Textview的颜色。为此,我必须检查getView()方法中的每个项目位置。我的问题是如何根据列表中的位置获取此Textview
我试图找到一种在getView中使用mstring[position]
的方法,但这只会返回一个字符串。而不是意见。
有什么想法吗?得到了很多赞赏
代码:
@Override
public int getCount(){
return mstring.length; //Array of Strings
}
@Override
public String getItem(int position){
return mstring[position];
}
@Override
public long getItemId(int position){
return position;
}
@Override
public boolean isEnabled(int position) {
int set = 0;
switch(position){
case DATA_A:
if(a_data == 1){
set = 1;
}else {
set = 0;
}
break;
case DATA_B:
if(b_data == 1){
set = 1;
}else {
set = 0;
}
break;
case DATA_C:
if(c_data == 1){
set = 1;
}else {
set = 0;
}
break;
}
return (set == 1)? true:false;
}
@Override
public View getView (int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView == null){
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(ViewResourceId, null);
holder = new ViewHolder();
holder.imageview = (ImageView)convertView.findViewById(R.id.menu_image_item);
holder.text_title = (TextView)convertView.findViewById(R.id.menu_textview_id);
holder.arrowImageView = (ImageView)convertView.findViewById(R.id.menu_arrow_id);
convertView.setTag(holder);
}
else{
holder = (ViewHolder)convertView.getTag();
}
//set Array text values defined in xml to textview
String title = mstring[position];
holder.text_title.setText(title);
//set Array icons values defined in xml to textview
holder.imageview.setImageDrawable(icons.getDrawable(position));
/*!!!Having the troubles here!!!!! giving NullPointerException!!!! and not
sure what to try*/
if(!myListView.getChildAt(position).isEnabled()){
holder.text_title.setTextColor(R.color.greyed_text_color);
}
return convertView;
}
}
答案 0 :(得分:1)
你应该发布整个代码,否则很难发现什么是错的。如果我是你,我会检查返回此行的结果:
myListView.getChildAt(position)
你在这一行中使用的:
if(!myListView.getChildAt(position).isEnabled()){