2012-03-01 1 views
4

자식보기를 올바르게 그리려면 adapterview를 얻으려고 시도하지만 어댑터가 반환 한보기의 자식보기를 가져 오는 데 문제가 있습니다. 특히, 내 어댑터는 다음과 같이 간단한 의견을 뱉어해야합니다어댑터보기를 사용할 때보기 그룹에서 자식보기를 그릴 수 없습니다.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF"> 

     <TextView 
      android:id="@+id/photo_cell_contents" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10px" 
      android:text="@string/photo_cell_default_text" 
      android:textColor="#000000" 
      android:textSize="80px"/> 

</LinearLayout> 

어댑터의의 getView() 메소드가 호출받을 않으며, 실제로 어댑터 뷰 AdapterView에이보기의 인스턴스를 반환 않습니다. 나는 또한 내 adapterview에 중단 점을 넣었으며 적절한 뷰 계층 구조가 있음을 볼 수 있습니다. 즉, 자식 textview 객체가있는 루트 선형 레이아웃입니다. 그러나 어댑터보기가 배치되어 어댑터에서 리턴 한 하위보기를 그릴 때 내 부 텍스트보기는 그려지지 않습니다. 각 셀에 해당하는 실제 색상 상자가 표시되지만 내부에 표시되어야하는 텍스트는 아닙니다. 왜 이런 일이 일어날 수 있는지 생각하는 사람이 있습니까?

for (int idx = 0; idx < this.getChildCount(); idx++) { 
     if (idx != dragged) 
     { 
      Point xy = getCoorFromIndex(idx); 
      View child = getChildAt(idx); 
      child.layout(xy.x, xy.y, xy.x + childSize, xy.y + childSize); //view group will layout the children based on the sizes determined for available columns 
      int left = child.getLeft(); 
      int right = child.getRight(); 
      int top = child.getTop(); 
      View tv = ((ViewGroup)child).getChildAt(0); 
      int tvleft = tv.getLeft(); 
      int tvright = tv.getRight(); 
      int tvtop = tv.getTop(); 

      Log.i("dgv", "Here is info about main view ... left = " + left + "; right = " + right + "; top = " + top); 
      Log.i("dgv", "Here is info about text view ... left = " + tvleft + "; right = " + tvright + "; top = " + tvtop); 


     } 
    } 
+0

하나의 아이디어 : 텍스트를 올바르게 설정하지 않습니까? 보기를 그리는 경우 문제는 아마도 텍스트 설정 일 것입니다. 몇 가지 코드를 게시하면 디버깅을 도와 줄 수 있습니다. – AJcodez

+0

이것을 알아 냈습니까? 비슷한 문제가 있습니다 ... – NPike

+0

예, 아래를 참조하십시오. – Faisal

답변

2

문제 : 아래 (내가는, setAdapter 때 추가됩니다()와 나는 어댑터 뷰 AdapterView를 스크롤로 업데이트받을 것이다), 아이 뷰를 레이아웃 어댑터 뷰의 onLayout() 메소드의 코드는 어댑터 뷰의 레이아웃 메서드에서 자식 뷰를 측정하고 레이아웃해야하는 것이 었습니다. 자식보기를 측정하기 위해 코드를 추가 한 다음 child.layout()을 호출하면보기가 올바르게 표시됩니다. 희망이 도움이됩니다.

+0

이 작업을 수행하는 데 사용한 코드를 공유 할 수 있습니까? 어댑터보기에서보기를 표시하는 동안 비슷한 문제가 발생합니다. – murtuza