2014-11-08 2 views
0

Android Interview에서 자습서를 따라 맞춤 ListView를 만들었습니다. 다음은 링크입니다 : http://www.androidinterview.com/android-custom-listview-with-image-and-text-using-arrayadapter/목록보기에서 행에 스위치 위젯을 추가하는 방법은 무엇입니까?

ListView의 첫 번째 행에 스위치 위젯을 추가하고 싶습니다. 1 행 또는 1, 4, 7, 16 등의 특정 행에서 어떻게 수행 할 수 있습니까?

+0

맞춤 어댑터를 만듭니다. –

+0

@HareshChhelana 이미 사용자 정의 어댑터가 있습니다. 난 단지 1 행에 스위치를 추가하고 싶습니다. 스위치를 단 하나의 행에 추가 할 수 있도록 레이아웃을 수정하려면 어떻게해야합니까? –

+0

getView()에서 항목 레이아웃을 나열하고 숨기거나 표시 할 기본 위치를 놓으십시오. –

답변

2

당신의 ListView를 처음 사용하는 경우 쉬운 대답은

  1. 기본 레이아웃에 스위치를 넣습니다. 레이아웃 파일은 링크 된 예제에서 ID가 R.layout.mylist 인 xml 파일입니다.

  2. 위치 0이 아닌 모든 위치에 대해 스위치를 숨기십시오. 그렇지 않은 경우 표시하십시오. 보기 재활용 때문에 기본값이 무엇인지에 의존 할 수 없으므로 숨기거나 표시해야합니다.

더 많은 고급 대답은 : 그것은 getViewType 및 getViewTypeCount (배열 어댑터하지 않는) 방법을 가지고로

  1. 는 기본 어댑터를 사용합니다. 배열과 뷰 요소 사이의 관계를 코드화해야 할 것입니다. listViews/어댑터를 처음 사용하는 경우에는 뷰잉 요소가 너무 어려울 수도 있습니다.

  2. 두 개의 레이아웃 (xml 파일)을 만들고 스위치 하나로 만듭니다.

  3. getViewType 및 getViewTypecount를 대체하십시오. getViewTypeCount 2를 반환해야하고, getViewType 0의 위치를, 나머지 1을 반환하지 때마다 위치를 0을 반환해야하므로

당신은 지금이 개보기 유형이있다.

  1. getView에서 정확한 레이아웃으로 null 인 경우 convertView를 확장합니다. getViewType (position)을 호출하고 결과를 켤 수 있습니다.

이렇게하면 어댑터는 올바른보기 유형 만 어댑터에 전달하므로 getView가 호출 될 때마다 스위치를 숨기기/숨기기 해제 할 필요가 없습니다. Android는 스위치가있는 레이아웃 하나만 만듭니다. 따라서 더 효율적입니다.

0

condetion 경우 어댑터

에서 목록보기의 어댑터에 다른 매개 변수를 보내기 할 수있는 경우 (매개 변수 == 1)

{표시 스위치}

+0

getView() 위치 인수를 사용하여 행의 위치를 ​​가져올 수 있지만 특정 행에만 스위치를 추가하려면 어떻게해야합니까? –

0

스위치 레이아웃을 변경하여 모든 행에 스위치 위젯을 추가 한 다음 1 행을 제외한 모든 행의 모든 ​​스위치에 대해 가시성을 "고정"으로 설정했습니다.

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.mylist, null,true); 
    Switch mSwitch = (Switch) rowView.findViewById(R.id.switch1); 

    if(position != 0) { 
     mSwitch.setVisibility(View.GONE); 
    } 

    return rowView; 
}; 
관련 문제