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);t v.setBackground(res.getDrawable(R.drawable.not_clicked));
}
}
}
});
, 두 드로어 블을 생성 - 원하는 색상 투명 하나, 또 다른합니다. 클릭 한 위치 (정의 된 int 위치)에서 포커스를 요청하고 해당 행의 색상을 변경합니다. 그런 다음 부모 listview
을 살펴보고 그에 따라 다른 모든 행을 변경하십시오. 사용자가 listview
번을 여러 번 클릭 할 때 차지합니다. 이것은 listview
의 각 행에 대한 사용자 정의 레이아웃으로 수행됩니다. (아주 간단하게하는 textview
그냥 새로운 레이아웃 파일 - 포커스 또는 클릭 설정하지 마십시오!) 어떤 사용자 정의 어댑터가 필요하지 않습니다 - 나는 선택을하는 경우,이 시도했습니다
출처
2013-06-27 13:54:47
Wes
당신의 명부에있는 전망이있을 때 중대한 응답, 그러나 바르게 작동하지 않는다. 'firstPosition'에 대한 할당은 이것을 수정하기 위해'int firstPosition = listView.getFirstVisiblePosition() - listView.getHeaderViewsCount();'가되어야합니다. – pospi
@pospi : 감사, 좋은 지적! 그 문제를 해결하기 위해 내 대답을 업데이트했습니다. – Joe
의사입니까? 당신이 생명의 은인이기 때문에. 나를 위해 –