0

我正在尝试根据参数更改列表视图的背景行颜色,并且在行上View v = super.getView(position, convertView, parent)它给了我错误“无法直接调用类型适配器的抽象方法 getView(int, View, ViewGroup)”。这是所有的代码。

public class CustomListViewAdapter extends BaseAdapter
{  

LayoutInflater inflater;
List<ListViewItem> items;

public CustomListViewAdapter(Activity context, List<ListViewItem> items) {  
    super();

    this.items = items;
    this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override  
public int getCount() {  
    // TODO Auto-generated method stub  
    return items.size();  
}  

@Override  
public Object getItem(int position) {  
    // TODO Auto-generated method stub  
    return null;  
}  

@Override  
public long getItemId(int position) {  
    // TODO Auto-generated method stub  
    return 0;  
}

@Override  
public View getView(final int position, View convertView, ViewGroup parent) {  
    View v = super.getView(position, convertView, parent); 

    ListViewItem item = items.get(position);

    if(convertView==null)
        v = inflater.inflate(R.layout.my_hospitals, null);
        TextView status = (TextView) v.findViewById(R.id.status);
        TextView name = (TextView) v.findViewById(R.id.name);
        TextView table = (TextView) v.findViewById(R.id.id);
        TextView info = (TextView) v.findViewById(R.id.info);

        status.setText(item.status);
        name.setText(item.name);
        table.setText(item.table);
        info.setText(item.info);

        if (item.status == "green"){
            v.setBackgroundColor(Color.GREEN);
        }

    return v;  
}
}
4

3 回答 3

1

更改 getView()

@Override  
public View getView(final int position, View convertView, ViewGroup parent) {  
    View v=convertView;
    ListViewItem item = items.get(position);

    if(v==null){
        v = inflater.inflate(R.layout.my_hospitals, null);
    }
        TextView status = (TextView) v.findViewById(R.id.status);
        TextView name = (TextView) v.findViewById(R.id.name);
        TextView table = (TextView) v.findViewById(R.id.id);
        TextView info = (TextView) v.findViewById(R.id.info);

        status.setText(item.status);
        name.setText(item.name);
        table.setText(item.table);
        info.setText(item.info);     
        String state=tem.status;


        if (state.equals("green"){
            v.setBackgroundColor(Color.GREEN);
        }

    return v;  
}
于 2013-11-11T16:42:31.227 回答
0

就像错误说你不能这样做

View v = super.getView(position, convertView, parent);

相反,您应该这样做

View v = convertView;

然后检查是否v为空

if(v == null){
    //get the view
}
于 2013-11-11T16:35:52.777 回答
0

也许我不太理解你的问题,但不是这个

item.status == "green"

用这个

item.status.equals("绿色")

于 2013-11-11T16:42:02.447 回答