OK, 내 SD 카드의 이미지를 액티비티 ListView
에 표시하려고합니다.SimpleCursorAdapter.setViewImage를 사용할 때 호출의 라이프 사이클
많은 힌트를 읽고 있지만 중요한 덩어리를 놓치고 있습니다. 나는 이것을 보여 주며 아직 아무것도 발견하지 못했던 짧은 소스 코드를보고 싶다.
내 연구에서 bindview()
은 listview.setadapter(SimpleCursorAdapter adapter)
이 실행될 때 호출됩니다. 문서에 따르면 ViewBinder
이 ImageView
을 처리 할 수없는 경우 은 bindview
에 의해 호출됩니다. 당신은 FROM
배열의 필드를 지정
TO
배열의
TextView
의
id
의
Cursor
및
TextView
와 뷰 그룹. 그런 다음 어댑터를
ListView
으로 설정하면 문제가 발생합니다.
나는 호출 순서는 다음 생각 : listView.setAdapter(SimpleCursorAdapter adapter)->adapter.bindView()->adapter.setTextView
의 Bindview 뷰 유형 and text value from the cursor and
setTextView`이 일을 TextView, determine that it can bind it, passes the
텍스트 뷰입니다 결정해야합니다.
이렇게하면 ImageView
과 매우 비슷합니다. 맞습니까? bindView
가 건너와 유형 ImageView
의 객체 때
listViw.setAdapter(SimpleCursorAdapter adapter)->adapter.bindView()->adapter.setImageView
그래서, 무슨 일을합니까? setTextView
과 같은 기본 구현이 있습니까? 나는 그것을하는 것이 어려울 것이라고 상상할 것입니다, 이미지는 매우 다양합니다. 텍스트는 텍스트이지만 이미지의 형식, 크기, 깊이, 크기, 위치 등이 있습니다. setTextView
에 전달 된 문자열은 페이로드 텍스트입니다. 이미지에서 문자열은 파일 이름 (아마도)이며 이미지의 시작점 만됩니다.
FROM
에 파일 이름이 들어있는 데이터베이스 열 이름으로 어댑터를 만들어야한다고 생각합니다. TO
배열은 내 레이아웃에 ImageView
의 ID 만 갖습니다. 기본 뷰 바인더 bindview() 사용할 수 있지만 예상 된 문자열 (파일 이름) 걸릴 setImageView()
무시해야하며 예상되는 응용 프로그램 경로에서 해당 이미지 이름을 찾을 수있는 이미지로드 선을 빌드합니다.
그래서 (아마도)입니다 :
listView.setAdapter(MyOwnSimpleCursorAdapter myOwnAdapter)->myOwnAdapter.super.bindView()->myOwnAdapter.setImageView()
이 사운드 권리를합니까? 누락 된 틈을 메우거나 작업 소스 코드를 제공하면 도움이 될 것입니다. 그건 그렇고, 내가 이렇게 코드를 작성했습니다,하지만 작동하지 않습니다. 그것은 매우 간단한 버그 일 수 있고 가능하다면이 스레드를 멈추고 싶지 않습니다. 나는 그저 올바른 방향으로 조금 움직여야한다고 생각합니다.
훌륭한 답변을 주셔서 감사합니다. 특히 내 질문을 찾기가 어렵다는 것을 고려하면 더욱 그렇습니다. 문제는 다소 "이 소리가 맞습니까?" getView() 및 newView() 호출에 대해 알지 못했지만 setViewImage가 매우 유용하다는 점에 대한 추가 세부 정보가 있습니다. 아직 소스 코드에 대한 답변을 얻지 못했습니다. 설명서 만 있습니다. 또 다른 좋은 팁 ... – JustSomeGuy
내 코드도 실패하지 않았다. 당연히 어떤 이미지도 표시되지 않았다. 이것은 데이터베이스에서 반환 된 문자열이 Uri의 "photo100.jpg"대 "file : //mnt/sdcard/photo100.jpg"가 아닌 단지 파일 이름 이었기 때문입니다. 이미지의 전체 경로를 저장하는 것으로 전환합니다. 여러 위치에서 이미지를 지원하기로 결정한 경우에 더 유용 할 것입니다. – JustSomeGuy