2014-03-28 28 views
1

的颜色是我的ListView适配器类我想改变最后位置值的颜色,假设我的ListView显示了6个元素,我想改变第6个元素的颜色,我将如何做到这一点???我想改变最后一个元素文本的唯一的颜色如何更改最后一个listview适配器索引

public class CustomAlertAdapter extends BaseAdapter{ 
TextView titlename; 
Context ctx=null; 
ArrayList<String> listarray=null; 
private LayoutInflater mInflater=null; 
public CustomAlertAdapter(Activity activty, ArrayList<String> list) 
{ 
    this.ctx=activty; 
    mInflater = activty.getLayoutInflater(); 
    this.listarray=list; 
} 
@Override 
public int getCount() { 

    return listarray.size(); 
} 

@Override 
public Object getItem(int arg0) { 
    return null; 
} 

@Override 
public long getItemId(int arg0) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup arg2) {  
    final ViewHolder holder; 
    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = mInflater.inflate(R.layout.alertlistrow, null); 

     holder.titlename = (TextView) 
     convertView.findViewById(R.id.textView_titllename); 






     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 







    String datavalue=listarray.get(position); 

    holder.titlename.setText(datavalue); 

    return convertView; 
} 

private static class ViewHolder { 


    TextView titlename; 
     } 
    } 

回答

1

改变颜色,只要改变充气视图的特性基于位置在数据结构中

public View getView(int position, View convertView, ViewGroup arg2) { 

// inflate view 
convertView = mInflater.inflate(R.layout.alertlistrow, null); 
... 

// modify view 
if(position == listArray.size()-1){ 
convertView.setBackgroundColor(R.color.some_color_resource_id); 
} 

... 

// return view 
return convertView; 

只要在你返回视图之前完成getView函数就可以了。

值得记住的是,为列表中的每个元素调用该位置,并将位置提供给您。

希望这会有帮助

0
public View getView(int position, View convertView, ViewGroup arg2) 

这里的位置是特定项目的位置。

所以检查位置==总项目(在你的案件总数可能ArrayList的大小)

convertView.setBackground("Your Color here"); 
+0

这就是我的问题怎么我会知道现在的位置是最后???? – user3472001

+0

你的arralist大小是你最后的位置。 –

0

您可以检查位置并相应地更改颜色。例如:

@Override 
public View getView(int position, View convertView, ViewGroup arg2) {  
    final ViewHolder holder; 
    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = mInflater.inflate(R.layout.alertlistrow, null); 
     holder.titlename = (TextView) 
     convertView.findViewById(R.id.textView_titllename); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    String datavalue=listarray.get(position); 
    holder.titlename.setText(datavalue); 
    int color = (position == getCount() - 1) : Color.BLACK : Color.YELLOW; 
    holder.titlename.setTextColor(color) 
    return convertView; 
} 
1

试试这个里面getView(..)

if (position == listarray.size()-1) { 
     convertView.setBackgroundColor(Color.BLUE); 
    }