2014-02-05 3 views
0

다른 변수에 따라 TextView를 내 ListView 내에서 볼 수 있도록 설정하려고합니다. 하지만 시도해 볼 때ListView에서 TextView를 보이게하거나 사라지게 설정하기

레이아웃에서 2를 찾을 수없는 것 같습니다.

내가 수집 한 것부터 findViewbyId() 앞에 뭔가가 있어야하지만 확실하지 않습니다. 목록의 항목 레이아웃은 list_item.xml에 의해 수행됩니다. 이 모든 것을 처리하는 코드는 다음과 같습니다

   ListAdapter adapter; 
       if(add.equals("Event")){ 
        stime.setVisibility(View.VISIBLE); 
        sdate.setVisibility(View.VISIBLE); 
        adapter = new SimpleAdapter(
          AllSpotsActivity.this, spotsList, 
          R.layout.list_item, new String[] { TAG_PID, 
            TAG_NAME, "sdistance","dateof","timeof" }, new int[] { 
            R.id.pid, R.id.name, R.id.distance, R.id.date, R.id.time}); 
       }else{ 
       adapter = new SimpleAdapter(
         AllSpotsActivity.this, spotsList, 
         R.layout.list_item, new String[] { TAG_PID, 
           TAG_NAME, "sdistance" }, new int[] { 
           R.id.pid, R.id.name, R.id.distance }); 
       } 

가 사전에 감사합니다,

타일러

편집 : 나는 또한 정맥 주사를 사용하여 시도했다 : 2

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
android:background="@drawable/gradient_background" 
> 


<!-- Product id (pid) - will be HIDDEN - used to pass to other activity --> 
<TextView 
    android:id="@+id/pid" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:visibility="gone" /> 

<!-- Name Label --> 
<TextView 
    android:id="@+id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingTop="6dip" 
    android:paddingLeft="6dip" 
    android:textSize="17dip" 
    android:textStyle="bold" /> 
     <!-- Name Label --> 
<TextView 
    android:id="@+id/distance" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:paddingRight="6dip"/> 
    <TextView 
    android:id="@+id/date" 
    android:layout_below="@id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingLeft="12dip" 
    android:visibility="gone"/> 
    <TextView 
    android:id="@+id/time" 
    android:layout_below="@id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:paddingRight="6dip" 
    android:visibility="gone"/> 


</RelativeLayout> 

편집 .findViewById() 때문에 lv = getListView(); 하지만 그건 효과가 없었습니다.

+0

텍스트 게시를 정의하는 xml을 게시하십시오. – owe

답변

2

각 행의보기에서 findViewById()으로 전화해야한다고 생각합니다. 예를 들어 어댑터의 getView() 메서드에서 해당 메서드를 호출하는 경우 convertView.findViewById을 사용해야합니다.

+0

그래, onCreate() 내가 lv = getView();하지만 covertView 시도했을 때 그냥 정의하려면 묻는 밑줄. – TylerM

0

단순한 TextView 이상을 ListView의 각 항목에 대한 레이아웃으로 사용하려면 을 확장하는 사용자 지정 어댑터를 만들어야합니다. 사용자 정의 어댑터의 getView() 메소드 내에서 사용자 정의 xml 레이아웃에 액세스 할 수 있습니다 (constructor of the ArrayAdapter에 대한 인수 중 하나는 목록의 각 항목에 대해 원하는 레이아웃 파일의 자원 ID입니다 [예 : R.layout.your_custom_list_item]). 이 메소드의 내부에서 사용자 정의 레이아웃을 확장 할 수있는 새 뷰 또는 재활용 뷰에 액세스 할 수 있습니다.

getView() 메서드 내에서 호출하는 LayoutInflater.inflate() 메서드는 findViewById()를 호출하여 상호 작용할 사용자 정의 레이아웃의 모든보기에 액세스 할 수있는보기를 반환합니다. 어댑터에 전달하는 데이터를 기반으로 뷰를 표시하거나 숨길 수 있습니다 (어댑터 생성자의 세 번째 인수는 뷰를 채우는 데 사용할 데이터가있는 목록 또는 어댑터입니다). 좀 더 자세한 설명을 원하시면 I/O video on ListViews을 보시기를 강력히 권합니다. 아래에 맞춤형 어댑터에 대한 몇 가지 샘플 코드도 포함 시켰습니다.

관련 문제