2011-01-26 5 views
3

ListView에서 OnItemClick 이벤트에서 선택된 항목을 설정하려고하는데 항목을 선택된 상태로 두지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?안드로이드 - ListView에서 OnItemClick의 setSelected

lView.setOnItemClickListener(new OnItemClickListener() 
    { 
    @Override 
    public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View clickedview, int position, long id) 
    { 
    clickedview.setSelected(true); 
     mItemsAdapter.select(position); 
    } 
    }); 

몇 가지 :
1. 나는 목록보기에서 여러가 선택 구현하기 위해 노력하고 있습니다.
2. Activity는 BaseActivity 사용자 정의 클래스에서 이미 확장되어 있으므로 ListActivity에서 확장 할 수 없습니다.
3. mItemsAdapter는 BaseAdapter를 확장하는 사용자 지정 ItemsAdapter 어댑터입니다.
4. 확인란을 선택하지 않아도 선택한 행이 제대로 표시되는지 확인할 수 있습니다.
5. ItemsAdapter는 getView()를 재정의하고 xml을 부 풀려서 행의 레이아웃을 설정합니다.

답변

0

저는 현재 시간이 없습니다. 그래서 나는 나중에 다시 한번 살펴 볼 것입니다. 어쨌든 내 이전 질문에서보세요, 저도 같은 고민했다 :

이 경우 당신을위한 해결책이 아닙니다 (I 첫 번째 코드라고 생각해주세요.) 도움을 받으려면 코드가 더 필요합니다.

희망이 조금 도움이됩니다. 선택으로 긴 클릭하면 내가있는 ListView의 아이템을 얻을 관리 할 수 ​​

+0

첫 번째 게시물이 약간 다른 코드를 가지고 있고 아이템 점프와 동일한 문제가 발생했음을 확인해 주셔서 감사합니다. 그게 뭐야? 지금 방법을 시도 할 것입니다. – dropsOfJupiter

+0

@dropsOfJupiter 그래, 문제가 생겼을 경우에 대비해! – Beasly

+0

@dropsOfJupiter "문제"는 목록 밖으로 스크롤 된 각 행 (보기)이 대신 표시되는 행에 대해 재사용된다는 것입니다.이 작업을 처리해야하며 "새"뷰 (행)에 대한 참조를 업데이트해야합니다. 어떤 이유로 든 정상적인 onClick() 메소드는 더 이상 작동하지 않습니다. – Beasly

0

선택 기능을 사용하여 많은 기능을 사용하지 못했습니다.

사용자 지정보기가 행으로 부풀어 오르는 것을 의미하는 사용자 지정 어댑터가 있습니다. 행에 checktextview 이상이 있으면 setSelections를 올바르게 사용할 수 없을 것이라고 생각합니다.

나는 내 자신의 모델과 기능을 사용하여이 문제를 해결했다. 목록의 각 항목에는 데이터를 선택하여 선택 여부를 결정할 수있는 데이터가 있습니다. 배열을 반복하고 값을 변경하고 어댑터에서 notifydatasetchangeded (getView를 사용하고 검사를 그리기 위해 내 선택 모델에 대해 검사 함)를 호출하여 UI를 업데이트하고 선택할 수 있습니다.

+0

감사합니다. 어딘가에 checkedtextview 구현을 보았고 일부 코드가 필요할지라도 시험해 볼 것입니다. OnTouchEvent를 사용하여 과장된 것처럼 보일 수도 있습니다. 아주 간단한 것이 있으면 안됩니까? :) BTW checkedtextview 그 컨트롤이나 XML 파일입니까? 나는 어딘가에 4에서 6 콘트롤을 포함하는 내 자신의 XML 파일을 가지고 있으며, 그들은 모두 동적으로 개체에 돌아 오는에 따라 켜지/꺼져 있습니다. TextView 뿐만이 아닙니다. 많은 것들이 어댑터 getView()에서 이루어집니다. – dropsOfJupiter

5

설정되는 : 나는 requestFocusFromTouch()라고 후에 만 ​​작동

@Override 
public boolean onItemLongClick(AdapterView<?> parent, View view, 
     int position, long id) { 
    parent.requestFocusFromTouch(); // IMPORTANT! 
    parent.setSelection(position); 
    return true; 
} 

.

+0

더하기 하나는'requestFocusFromTouch()'입니다. – Lal

관련 문제