2012-05-04 5 views
0

지금 문제가 있습니다! 사용자 지정 ListView 있어요, 거기에 두 TextView 요소가 있습니다. ListView 요소의 TextView 하나에 대해 setVisibility (TextView.gone)를 원합니다. 나는 그것을setVisitility 사용자 정의 ListView

내가 코드 heren ienter 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); 

내 프로그램은 시작에 추락했다.

ADD :

내가 아래에 답을 사용하지만, 지금은 비어있는 ListView를 얻을. 이 문제를 어떻게 해결할 수 있습니까?

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); 
     } 
+0

최소한 코드에서 어댑터의 일부를 게시하십시오. –

+0

응용 프로그램에서 귀하의 활동 레이아웃 (main.xml에는 없을 수도 있음)에 없으므로 onCreate()에서 textViewTimeResult2를 찾을 수 없습니다. textViewTimeResult2는 어댑터의 listItems 행에서만 찾을 수 있습니다. getView() – julian

답변

3

어댑터에

+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){ 
     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; 
} 

ADDED : 당신이 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; 
} 
관련 문제