2015-08-21 105 views
-4

在我的android应用程序中,我有一个列表视图与自定义适配器,它有两个textviews。第一个textview将始终是文本,但在某些情况下,第二个textview将为空。我只在有文本的地方为第二个textview提供背景颜色。我在这里面临的问题是一旦我滚动列表视图,颜色被分配给整个列表视图。如何将颜色添加到带有listview中数据的textview?

的数据通过以下方式被传递给适配器:

String time_array[] = new String[]{"12 AM","1 AM","2 AM","3 AM","4 AM","5 AM","6 AM","7 AM","8 AM","9 AM","10 AM","11 AM","12 PM","1 PM","2 PM","3 PM","4 PM","5 PM","6 PM","7 PM","8 PM","9 PM","10 PM","11 PM"}; 

    String item_array[] = new String[]{"item1","item1","item1","","","","item1","item1","item1","","","","item1","item1","item1","item1","","","","","item1","item1","item1",""}; 



    for(int i=0;i<time_array.length;i++) 
    { 
     HashMap<String, String> map = new HashMap<String, String>(); 
     map.put("Time", time_array[i]); 
     map.put("Item", item_array[i]); 

     appointment_aaray.add(map); 

    } 

下面是我使用的ListView和着色第二的TextView代码:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    if(convertView==null) 
    { 
     viewHolder=new ViewHolder();// 
     convertView = inflater.inflate(R.layout.appointment_timings_row, null); 
     viewHolder.txt_time = (TextView)convertView.findViewById(R.id.txt_time); 
     viewHolder.txt_item = (TextView)convertView.findViewById(R.id.txt_item); 
     convertView.setTag(viewHolder); 

    } 
    else 
    { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

HashMap<String, String> map = new HashMap<String, String>(); 
    map = data.get(position);   
    viewHolder.txt_time.setText(map.get("Time")); 
    viewHolder.txt_item.setText(map.get("Item")); 

    if (position % 2 == 1) { 
     convertView.setBackgroundColor(Color.parseColor("#FFFFFF")); 
    } else { 
     convertView.setBackgroundColor(Color.parseColor("#FEF8F8")); 
    } 

    if(map.get("Item").equals("")) 
    { 

    } 
    else 
    { 
     viewHolder.txt_item.setBackgroundColor(activity.getResources().getColor(R.color.item_text_color)); 

    } 

    return convertView; 

} 

人帮助我与我在这里失踪? 谢谢你在Adavance!

+4

尝试设置TextView的颜色不能查看。 –

+0

@shivani,请检查并在本地声明您的ViewHolder,而不是全局声明。 –

+0

@Thirumalvalavan我分配给textview的唯一一个..'viewHolder.txt_item.setBackgroundColor(activity.getResources()。getColor(R.color.item_text_color));'通过这条线 – shivani

回答

2

列表视图将第一个可视行创建行以后在同一行会reused.So设置默认颜色在if条件

if(map.get("Item").equals("")) 
    { 
     viewHolder.txt_item.setBackgroundColor(default_color); 
    } 
    else 
    { 
     viewHolder.txt_item.setBackgroundColor(activity.getResources().getColor(R.color.item_text_color)); 

    } 
+0

非常感谢!有效! – shivani

相关问题