listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
View v;
int count = parent.getChildCount();
v = parent.getChildAt(position);
parent.requestChildFocus(v, view);
v.setBackground(res.getDrawable(R.drawable.transparent_button));
for (int i = 0; i < count; i++) {
if (i != position) {
v = parent.getChildAt(i);
v.setBackground(res.getDrawable(R.drawable.not_clicked));
}
}
}
});
기본적으로 두 개의 드로어 블을 만듭니다. 하나는 투명하고 다른 하나는 원하는 색상입니다. 클릭 한 위치 ( int position
정의 된대로) 에서 포커스를 요청하고 해당 행의 색상을 변경합니다. 그런 다음 부모를 살펴보고 ListView
그에 따라 다른 모든 행을 변경합니다. 이것은 사용자가 listview
여러 번 클릭하는 경우를 고려 합니다. 이 작업은의 각 행에 대한 사용자 지정 레이아웃으로 수행됩니다 ListView
. (매우 간단합니다. a를 사용하여 새 레이아웃 파일을 만드십시오 TextView
.-포커스 또는 클릭 가능으로 설정하지 마십시오!).
맞춤 어댑터가 필요하지 않음-사용 ArrayAdapter
firstPosition
것이 할당 되어야합니다int firstPosition = listView.getFirstVisiblePosition() - listView.getHeaderViewsCount();
.