2017-01-18 1 views
0

저는 listview를 사용하고 있으며 raw.xml에 2 개의 다른 레이아웃을 가지고 있으며 사용자 정의 listview 어댑터 클래스에서 가시성 (GONE, VISIBLE)을 사용하여 컨트롤하려고합니다. 특정 항목의 레이아웃 onClick을 변경하고 싶습니다. 그러나 목록보기 항목을 클릭하면 마지막 항목의 레이아웃 효과 만 클릭해도 그 효과가 나타납니다. 여기 내 코드가 있습니다. 미리 감사드립니다.ListView 항목 레이아웃을 onClick을 사용하는 어댑터에서 변경합니다.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:id="@+id/advertisement_expandable" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <LinearLayout 
     android:id="@+id/layout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     . 
     . 
     . 
    </LinearLayout> 

    <RelativeLayout 
     android:layout_margin="10dp" 
     android:id="@+id/layout2" 
     android:visibility="gone" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     . 
     . 
     . 
     </LinearLayout> 
    </RelativeLayout> 
</RelativeLayout> 

어댑터를 사용할 때;

RawView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if(currentAdvertisement.isExpanded){ 
        layout1.setVisibility(View.VISIBLE); 
        layout2.setVisibility(View.GONE); 
        currentAdvertisement.isExpanded=false; 
       }else{ 
        layout1.setVisibility(View.GONE); 
        layout2.setVisibility(View.VISIBLE); 
        currentAdvertisement.isExpanded=true; 
       } 
      } 
     }); 

답변

1

난 당신이

RawView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       View layout1 = v.findViewById(R.id.layout1); 
       View layout2 = v.findViewById(R.id.layout2); 

       if(currentAdvertisement.isExpanded){ 
        layout1.setVisibility(View.VISIBLE); 
        layout2.setVisibility(View.GONE); 
        currentAdvertisement.isExpanded=false; 
       }else{ 
        layout1.setVisibility(View.GONE); 
        layout2.setVisibility(View.VISIBLE); 
        currentAdvertisement.isExpanded=true; 
       } 
      } 
     }); 

같은 당신이 당신의 어댑터를 팽창 그렇지 않은 경우, 당신은 모든 시간이 두 변수를 THW 무시하고 마지막 팽창 전망에 항상 참조가 필요하다고 생각

+0

나는 그의 질문을 이해할 수 없다는 인상이 듭니다. 투표는 –

+0

처럼 매력적입니다! 빠른 응답을 주셔서 감사합니다. –

관련 문제