2012-01-20 3 views
3

ArrayAdapter의 항목으로 채워진 ListView가 있습니다. 이제 나는 클릭 할 때 그들을 치고 싶다. 또한 이미 공격 받았을 때 (외부 API 호출 등) 처음부터 체크하고 싶다. 하지만 위의 메서드는 onItemClickListener에서만 작동합니다. ListView getChildAt()는 null을 유지하지만 onclick에서 작동하면

public void machListe() { 
    listViewArrayAdapter = new ArrayAdapter(getApplicationContext(),R.layout.task_item, ti); 
    taskListe.setAdapter(listViewArrayAdapter); 
    TextView ab=(TextView) taskListe.getChildAt(0); 

그래서 나는 Debugg 경우 지금은 AB가 null 볼 : 이 더 잘 이해하기 위해, 여기에 몇 가지 코드입니다.

taskListe.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) { 

    TextView ab=(TextView) taskListe.getChildAt(0); 

여기서 디버그하면 ab는 null이 아닙니다.

답변

3

뷰 내부의 작업 상태를 손상 시키려고합니다.

이 시점에서 모델과보기를 분리해야합니다. 단일 작업이 포함 된 모델 개체를 만든 다음 ArrayAdapter을 확장하고 getView을 덮어 씁니다. getView에서 태스크 목록에서 올 Y 른 태스크를 검색합니다. 작업에 대한 textview를 만들고 작업이 모델에서 완료로 표시되면 텍스트를 취소합니다.

목록을 만든 후에보기를 변경하려고하면 화면에 표시된 항목에 대한 목록 만 자식보기로 유지되므로 목록 스크롤이 중지 될 때마다이 작업을 수행해야합니다. 메모리를 절약하기 위해 스크롤하는 동안 만들어집니다.

목록보기 항목을 변경하는 올바른 위치는 해당 어댑터의 getView 메소드에 있습니다.

자세한 내용은 vogella.de에서 ListsView Tutorial을 확인하십시오. 코드는 다음

+0

:-)하지만 성능이 좋지 않아서 조금만 빠르다 – Florian

+0

문제는 지금은 항목이 표시 될 때마다보기를 업데이트하지만, 서버에서 데이터를로드하므로 유동적이지 않습니다! – Florian

+0

하하 바보 같은 실수. 나는 그것을 서버에서 매번로드했는지 여부를 확인하기 위해로드했습니다.하지만이 배열을 이전에 저장 했으므로 쓸모없고 바보 같았습니다. 지금은 fluetnly now :-) – Florian

2

어댑터를 설정하면 requestLayout이 트리거되지만 실제 레이아웃은 아직 완료되지 않습니다.
그래서 setAdapter를 호출 한 직후 getChildAt (0)을 호출하면 taskListe에 하위 뷰가 표시되지 않습니다.

+0

확인 인덱스 값이고, 내가이 아이 뷰를 얻으려면 어떻게해야합니까? – Florian

+1

왜 그 시점에서 하위 뷰가 필요한지 설명 할 수 있습니까? 어댑터 (adapter.getView (0, null, ...))에서 자식 뷰를 직접 가져올 수는 있지만 사용자의 요구를 해결할 수 있을지 확신 할 수 없습니다. –

+0

물론 :이 발췌 부분을 포함하는 메소드는 온라인 할 일 서비스의 작업 항목을 가져 오기 위해 onCreate 시작 부분에 호출됩니다. 그러면 "완료"된 모든 작업을 수행해야하므로 자식 뷰가 필요합니다. 각 TextView가 작업이기 때문입니다. – Florian

0

이며, 2

View view=adapter.getView(2, null, null); 
    TextView textView = (TextView) view.findViewById(R.id.textView1); 
    String value = textView.getText().toString(); 
관련 문제