2012-05-04 51 views
0

我現在有一個問題!我有自定義ListView,那裏有兩個TextView元素。我希望ListView元素中的一個TextView的setVisibility(TextView.gone)。我不知道該怎麼辦呢setVisitility item in custom ListView

寫的我怎麼能隱藏的TextView I輸入代碼和仁的ListView中的所有項目爲例

ListView控件:爲ListView控件

<ListView 
      android:id="@+id/listResultAvia" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="left" 
      android:layout_weight="1" 
      android:background="#ffffff" 
      android:cacheColorHint="#ffffff" 
      android:drawingCacheQuality="auto" > 

      <!-- Preview: [email protected]/item --> 
     </ListView> 

自定義項:

<?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="wrap_content" 
    android:background="#fff" > 
     <TextView 
      android:id="@+id/textViewTimeResult" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Large Text" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textColor="#000000" /> 

     <TextView 
      android:id="@+id/textViewTimeResult2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Large Text" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textColor="#000000"/> 
    </LinearLayout> 

請教我如何隱藏onCreate中的textViewTimeResult2。 如果我寫:

TextView test = (TextView) findById(R.id.textViewTimeResult2); 
test.setVisibility(TextView.GONE); 

我的程序在開始崩潰。

地址:

我使用下面的答案,但現在我得到空的ListView。我該如何解決?

+0

請至少從適配器發佈一些代碼。 –

+0

您的應用程序無法在onCreate()上找到您的textViewTimeResult2,因爲它不在您的活動佈局中(可能不在main.xml中) textViewTimeResult2只能在您的適配器的listItems行中找到getView() – julian

回答

3

在您的適配器,你可以試試這個代碼隱藏第二TextView的。

public View getView(int position, View convertView, ViewGroup parent){ 
     convertView = mInflater.inflate(R.layout.your_custom_list_layout, null); 
    TextView textOne = (TextView)convertView.findViewById(R.id.txtOne); 
    TextView textTwo = (TextView)convertView.findViewById(R.id.txtTwo); 

    textTwo.setVisibility(View.GONE); 

    return convertView; 
} 

新增: 你可以添加你的裏面,然後onClick()修改getView()切換一個布爾值;

boolean hideTextTwo = false; 

    onClick(View v){ 
     hideTextTwo = true; 
     yourAdapter.notifyDatasetChanged(); 

    } 


public View getView(int position, View convertView, ViewGroup parent){ 
    convertView = mInflater.inflate(R.layout.your_custom_list_layout, null); 
    TextView textOne = (TextView)convertView.findViewById(R.id.txtOne); 
    TextView textTwo = (TextView)convertView.findViewById(R.id.txtTwo); 

if(hideTextTwo){ 
    textTwo.setVisibility(View.GONE); 
} 

    return convertView; 
} 
+0

mInflater - 那裏應該? –

+0

啊你可以用'convertView = getLayoutInflater()替換那行'inflate(R.layout.custom_layout,null)' – julian

+0

mInflater是一個LayoutInflater,它用來實例化一個xml佈局到它相應的View對象 - 更多關於這個在http://developer.android.com/reference/android/view/LayoutInflater.html – julian

1

//在適配器

public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      inflater = context.getLayoutInflater(); 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.list_row, null); 
      holder.first_line=(TextView) convertView.findViewById(R.id.textview_row1); 

      holder.second_line=(TextView) convertView.findViewById(R.id.second_row); 

      convertView.setTag(holder); 
     } 


//TODO: hiding the first_line in the listview 
      holder.first_line.setVisibility(View.GONE); 
      holder.second_line.setText(""); 
return (convertView); 
     }