에 보이는 전망을 위해 전달됩니다같은 convertView 인스턴스는 내가 안드로이드에서 사용자 지정 만든 CursorAdapter 파생 클래스에 이상한 문제가 CursorAdapter
내의 getView() 구현 많은 사이트/구글 회담에서 본 바로 교과서. 그러나 다른 위치의 경우 (이 메서드가 호출되는 위치 매개 변수) 인 것처럼 보입니다.이 메서드는 convertView의 동일한 인스턴스를 전달하는 것으로 보입니다.하지만이 메서드는 다른 개체 인스턴스를 참조해야합니다. ListView의 다른 표시 항목과 일치해야하며 표시 가능한 목록 항목의 경우 동일한 객체 인스턴스를 다시 사용해서는 안됩니다 ...
문제가 없는데도 문제가 재현되기 때문에 실제보기를 업데이트하는 실제 부분이 제거되었습니다 그것.
D/DD (27,725)이 코드를 실행
은@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; Log.d("dd", "getView()"); if (convertView == null) { Log.d("d", "convertview is null!"); // create convertView from xml convertView = this.mInflater.inflate(R.layout.catalog_entry, parent, false); // create the viewHolder viewHolder = new ViewHolder(); viewHolder.name = (TextView) convertView .findViewById(R.id.gameName2); viewHolder.image = (ImageView) convertView .findViewById(R.id.gameImage); convertView.setTag(viewHolder); } else { Log.d("dd", "convertview is not null"); viewHolder = (ViewHolder) convertView.getTag(); } LinearLayout thisItem = (LinearLayout) convertView; Log.d("thisItem", "This Item is Index " + position + " " + thisItem.toString() + " " + Integer.toHexString(System.identityHashCode(thisItem)) + "x: " + thisItem.getX() + " y: " + thisItem.getY()); this.cur.moveToPosition((int) (getItemId(position) - 1)); Log.d("dd", "End of getView()"); return convertView; }
이 출력을 생성의 getView() D/D (27,725)가 null convertview! 이 항목은 인덱스입니다. [email protected] 40fb5f70x : 0.0 y : 0.0 D/dd
(27725) : getView()의 끝 D/dd (27725) : getView) D/DD
은 (27,725)는 : convertview은/thisItem은 (27,725)는 널 D되지 : 0.0 Y : 0.0 D/DD
(27,725) 최종 제품의 [email protected] 40fb5f70x 인덱스 1 D/dd (27725) : getView() D/dd
(27725) : convertview는 null이 아닙니다.이 항목은 인덱스입니다. 2 [email protected] 40fb5f70x : 0.0 y : 0.0 D/dd
(27725) : getView()의 끝 D/dd (27725) : getView() D/dd,453,210 (27725)는 0.0, Y : 0.0 D/DD
(27,725)의 getView 끝()이 항목 40fb5f70x 인덱스 3 [email protected]이다 convertview은/thisItem은 (27,725)가 널 D 아니다 D/dd (27725) :이 항목은 인덱스입니다 4 [email protected] 40fb5f70x : 0.0 y : 0.0 D이 항목은 인덱스입니다. D/dd (27725) : getView() D/dd
(27725) d/dd
(27725) : getView()의 끝 D/dd (27725) : getView() D/dd
(27725) : convertview가 null이 아님이 항목은 색인입니다 0 android .widget.LinearLayout @ 40fb5f70 40fb5f70x : 0.0 y : 0.0 D/dd
(27725) : getView()의 끝 D/dd (277) 25) : getView() D/d
(27725) : convertview가 null입니다! D/dd (27725) :이 항목은 인덱스 1 [email protected] 40fb89f8x : 0.0 y : 0.0 D/dd
(27725) : getView()의 끝 D/dd (27725) : getView() D/d
(27725) : convertview is null! D/dd (27725) :이 항목은 인덱스입니다. [email protected] 40fb9c48x : 0.0 y : 0.0 D/dd
(27725) : getView()의 끝 D/dd (27725) : getView() D/d
(27725) : convertview is null! D/dd (27725) :이 항목은 인덱스입니다. [email protected] 40fbae98x : 0.0 y : 0.0 D/dd
(27725) : getView()의 끝 D/dd (27725) : getView() D/d
(27725) : convertview is null! D/thisItem (27725) :이 아이템은 인덱스입니다. [email protected] 40fbc0e8x : 0.0 y : 0.0 D/DD
(27,725)의 getView()의 최종
각 위치 (0-4)에 대해, 동일한 뷰 객체 해시가 전송되고 있음을 처음으로 알 수 ...
(. 인용 블록은 줄 바꿈을 존중하지 않기 때문에, 코드 블록에서 스택 추적을 게시하시기 바랍니다)의 ListView 자주 특히'wrap_content'를 높이로 사용한다면, 레이아웃을 그리기 전에'getView()'를 여러 번 호출하십시오. – Sam
그들은 한 번 생성 된 convertView를 전달하면서 getView를 여러 번 호출합니까? 심지어 다른 데이터 위치? –
또한 getView()의 목적은 특정 목록보기 항목에 대한보기를 만드는 것입니다. 이 항목을 일부 이미지/텍스트/등으로 채우는 경우 특정 항목별로 여러 번 호출 될 수 있다는 사실에 어떻게 대처할 수 있습니까? –