터치가 아닌 버튼으로 listview를 움직이려고 합니다.
검색해본 결과 setSelection으로 스크롤 움직이고 getChildAt().BackgroundColor을 이용하여 색을 바꾸는데
getChildAt().BackgroundColor가 이상하게 동작합니다. 위에서 차례로 하나씩 내려오면서 선택되게 하고 싶은데 스크롤 아래에 있는것 까지 선택되고 어쩔때는 한개씩 뛰어넘는 현상이 일어납니다.

package com.example.phonebook;
import java.util.ArrayList;
import android.app.Activity;
public class MainActivity extends Activity {
private ListView lv;
ArrayAdapter<String> adapter;
int scroll_pos = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Listview Data
String products[] = {"안기차녕", "무한도전기", "정형기돈", "정차형", "선물",
"아델", "집",
"기차", "버스", "기차1", "아리", "유재슥", "유재속", "유석재", "유느님", "하하","호호","히히","명수","무도","모두"};
lv = (ListView) findViewById(R.id.list_view);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
findViewById(R.id.up).setOnClickListener(mClickListener);
findViewById(R.id.down).setOnClickListener(mClickListener);
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.up:
scroll_pos--;
if (scroll_pos < 0) scroll_pos = 0;
break;
case R.id.down:
scroll_pos++;
break;
}
lv.setSelection(scroll_pos);
lv.getChildAt(scroll_pos).setBackgroundColor(Color.BLUE);
}
};
}
커스컴 리스트뷰로 어답터에 getView에도 해봤는데도 잘 안되었습니다.