0

У меня есть следующий код внутри моего адаптера:адаптер Android ListView ... нет перерисовывать

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    if (convertView==null) 
    { 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.box_afisare, null); 
    } 

    final TextView titlu = (TextView) convertView.findViewById(R.id.titlu); 
     titlu.setText(Html.fromHtml(textt.get(position))); 
     titlu.setTextSize(TypedValue.COMPLEX_UNIT_SP,font); 

     final Integer pos = position; 
     titlu.setOnClickListener(new View.OnClickListener() 
     { 

      public void onClick(View v) 
      { 

       if (main_contextt.selectie.contains(id_post.get(pos))) 
       { 
        Toast.makeText(mContext," REMOVE ",Toast.LENGTH_LONG).show(); 
        titlu.setBackgroundColor(Color.parseColor("#0077CC")); 
       } 
       else 
       { 
       main_contextt.selectie.add(id_post.get(pos)); 

       titlu.setBackgroundColor(Color.parseColor("#404040")); 

       } 
      } 
     }); 


    return convertView; 
} 

мне удается colorate выбранной линии или линии. Но когда я просматриваю список и эти выделенные строки больше не отображаются в области телефона ... цвет фона исчезает.

Это исчезает, только если эта линия/линии не отображается. Я думаю, что адаптер перерисовывается?

Что делать, чтобы оставаться цветом, установленным на линии/линиях, даже после прокрутки списка?

спасибо

ответ

0

ListViews перерабатывает свои дочерние виды. Поэтому, если у вас есть 20 элементов в вашем ListView, но на экране достаточно всего места, чтобы показывать 4 за раз, в ListView будет только 4 ребенка, которые он будет перерабатывать, чтобы показать все 20 предметов. Когда один вид прокручивается из поля зрения, он перерабатывается для следующего представления. See this answer для отличного объяснения.

Что вам нужно сделать, это привязать цвет к некоторым базовым данным. Тогда вы бы использовали код.

titlu.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      // set data.get(pos).color 
     } 
    }); 

titlu.titlu.setBackgroundColor(data.get(pos).color); 

... что-то вроде этого.

+0

спасибо! я пойду таким образом и надеюсь решить мою проблему :) –