2014-02-03 7 views
0

привет У меня есть ListView содержит много элементов на нем, но только 3 элементы являются видимыми, и я хочу, чтобы изменить цвет фона среднего элемента после прокрутки спискаИзменить цвет фона элемента в ListView onscroll?

мои Activity орудия AbsListView.OnScrollListener и у меня есть 2 метода переопределения как ниже

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 

} 

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

    int firstVisibleRow = AccountList.getFirstVisiblePosition(); 
    int lastVisibleRow = AccountList.getLastVisiblePosition(); 
    int middleone = firstVisibleRow+1; 

     Account test = (Account) AccountList.getItemAtPosition(middleone); 
     // test is the item in the middle of listview 

     Log.i("", "" + middleone + "=" + test.getDescription()); 
} 

создать список массивов Счетов и адаптер списка счета тест счета является средним элементом

и я получил это критично, как мне нужно теперь я хочу установить цвет фона для этой строки «тест»

пожалуйста, любая помощь желание я был ясно в моем вопросе спасибо всем

ответ

1

на первом спасибо всем

наконец я нашел мое решение здесь это

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
    wantedView.setBackgroundResource(R.drawable.background_shape);//or color but set background 
} 

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

    int middlePosition = AccountList.getFirstVisiblePosition()+1; 
    int firstPosition = AccountList.getFirstVisiblePosition() - AccountList.getHeaderViewsCount(); 
    int middleChild = middlePosition - firstPosition; 

    if (middleChild < 0 || middleChild >= AccountList.getChildCount()) { 
     Log.w("TAG", " Unable to get view for desired position, because its not being displayed on screen"); 
     return; 
    } 
    middleView = AccountList.getChildAt(middleChild); 
    middleView.setBackgroundColor(Color.WHITE); 



} 

удачи всем :)

0

Сделайте [ИНТ middleone] глобальная переменная (объявлять его перед OnCreate())

и чем использовать этот код:

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
    AccountList.get(middleone).setBackgroundColor(YOURCOLOR); 
} 
+0

извини, но тест является объект учетной записи это типа данных не смотреть Я хочу установить фон для представления, содержащего тестовый объект –

+0

проверить измененный ответ –

0

Вот код, который сделал трюк,

list.setOnScrollListener(new OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(AbsListView arg0, int arg1) { 
      // TODO Auto-generated method stub 
      int pos = list.getFirstVisiblePosition();    
      LinearLayout layout = (LinearLayout) list.findViewWithTag(pos++); 
      layout.setBackgroundColor(Color.GREEN); 
      Log.v("inside", "inside" + layout.toString()); 

     } 

     @Override 
     public void onScroll(AbsListView a,int arg1,int arg2,int arg3){ 
      // TODO Auto-generated method stub 

     } 
    }); 

и GetView выглядит,

if(convertView==null){ 
LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); 
      convertView = inflater.inflate(R.layout.layout, null); 
      holder = new ViewHolder(convertView); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.linear.setTag(position); 
     holder.tv1.setText(s[position]); 
     holder.tv2.setText(s1[position]); 

Пожалуйста, обратите внимание, я побежал в ClassCastException в конце концов, но это путь. Дайте мне знать, когда вы найдете путь через него.

Смежные вопросы