2014-02-18 4 views
-1

for 루프 내 프로그래밍 방식으로 뷰를 레이아웃에 추가하고 있습니다. 나는 모두의 setText 설정을 계속ID를 설정 한 후 ImageView가 사라집니다.

for (int i=0;i<resultList.length-1;i++){ 

    RelativeLayout viewToLoad = (RelativeLayout)LayoutInflater.from(this).inflate(R.layout.consulta_item, null); 
       ll.addView(viewToLoad); 

    ImageView ImgConsulta_action = (ImageView)findViewById(R.id.imageView_consulta_action); 

    LinearLayout dados_consulta = (LinearLayout)findViewById(R.id.LinearLayout_dados_consulta); 


    dados_consulta.setOnLongClickListener(...); 
    ImgConsulta_action.setOnLongClickListener(...); 

음 : 내 main_activity에서

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout_consulta_item_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <ImageView 
     android:id="@+id/imageView_consulta_action" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/LinearLayout_dados_consulta" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/LinearLayout_dados_consulta" 
     android:layout_centerHorizontal="true" 
     android:layout_centerInParent="false" 
     android:adjustViewBounds="true" 
     android:maxWidth="70dp" 
     android:padding="10dp" 
     android:scaleType="centerInside" 
     android:src="@drawable/estrela_off" /> 
    <LinearLayout 
     android:id="@+id/LinearLayout_dados_consulta" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="2dp" 
     android:layout_toLeftOf="@+id/imageView_consulta_action" 
     android:background="#660000" 
     android:orientation="vertical" > 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:gravity="center" > 
      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="top" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:text="@string/origem" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textColor="#ffaaaa" 
       android:textSize="10sp" /> 
      <TextView 
       android:id="@+id/textView_origem" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="YYY" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#eeeeee" /> 
      <TextView 
       android:id="@+id/textView5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="top" 
       android:layout_marginLeft="10dp" 
       android:layout_marginRight="5dp" 
       android:text="@string/data_ida" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textColor="#ffaaaa" 
       android:textSize="10sp" /> 
      <TextView 
       android:id="@+id/textView_data_ida" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="2014-05-05" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#eeeeee" 
       android:textSize="15sp" /> 
     </LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 

, 내가 생성자를 호출

내가 추가 해요 레이아웃의 XML 파일은 하나 같이입니다 레이아웃의 뷰 등등.

그러나, 각보기 위해 일할 수있는 setOnClickListener을하기 위해, 나는 루프의 내부의 전망에 ID를 설정해야합니다

: 이상한 일이 일어나고

dados_consulta.setId(4000+i); 
ImgConsulta_action.setId(5000+i); //(*lastline) 

가있다 이 마지막 줄에 주석을 달면 레이아웃이 제대로 삽입되어 별 모양을 나타내는 이미지 뷰가 표시되고 "dados_consulta"의 수신기가 정상적으로 작동합니다.

그러나이 마지막 줄에서 주석을 제거하면 별이 화면에서 사라집니다.

아무도 내가 무슨 일이 일어나는지 이해할 수 있도록 도와 줄 수 있습니까?

+0

코드에이 줄을 사용하는 다른 위치가 있습니까 :'ImageView ImgConsulta_action = (ImageView) findViewById (R.id.imageView_consulta_action);'?? – Merlevede

+0

문제의 원인이되는 코드 스 니펫으로 코드 부분을 게시하십시오. –

+0

@Merlevede 아니, 여기는 유일한 곳이야. ImgConsulta_action을 호출하는 다른 줄은 tag, onClickListener, setImageResource 및 setId를 설정하는 것입니다. 그런데, 문제를 야기하는 코드의 평화는 무엇입니까 – Totalys

답변

0

원본보기에서 레이아웃 요소의 ID를 참조하는 레이아웃 매개 변수를 사용했습니다. 이 레이아웃을 내 활동에 여러 번 추가하는 동안 ID를 동적으로 변경해야하므로 레이아웃 매개 변수를 새 ID로 재설정해야합니다. 그래서 다음 행을 추가했습니다.

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)ImgConsulta_action.getLayoutParams(); 
params.addRule(RelativeLayout.ALIGN_TOP, dados_consulta.getId()); 
params.addRule(RelativeLayout.ALIGN_BOTTOM, dados_consulta.getId()); 

ImgConsulta_action.setLayoutParams(params); 

RelativeLayout.LayoutParams paramsDadosConsulta = (RelativeLayout.LayoutParams)dados_consulta.getLayoutParams(); 
paramsDadosConsulta.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
paramsDadosConsulta.addRule(RelativeLayout.LEFT_OF, ImgConsulta_action.getId()); 

dados_consulta.setLayoutParams(paramsDadosConsulta); 

이제 완벽하게 작동합니다.

레이아웃이 다른 레이아웃보다 먼저 사라지는 것이 문제입니다. (다른 하나는 보이지 않게 함)

관련 문제