2016-05-05 7 views
0

CustomAdapterはBaseAdapterを拡張します。これはgetView()メソッドで、ViewHolderを使用します。そして、TextViewを使ってclickListenerを設定してビュー(Aと呼ぶ)を設定し、もう1つのビュー(Bと呼ぶ)を表示していますが、TextViewをクリックするとAGONEは空白になりますので、Bは一致しません親。 setVisibility(View.Gone)は動作しますが、ビューはまだ空間を所有しています

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final ViewHolder viewHolder; 
    if (convertView == null){ 
     convertView = mLayoutInflater.inflate(R.layout.customlayout,parent,false); 
     viewHolder = new ViewHolder(); 
    }else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    viewHolder.textView = (TextView) convertView.findViewById(R.id.textview); 
    viewHoler.a = (LinearLayout) convertView.findViewById(R.id.a); 
    viewHoler.b = (LinearLayout) convertView.findViewById(R.id.b); 
    viewHolder.textview.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (viewHolder.a.getVisibility() == View.GONE){ 
       viewHolder.b.setVisibility(View.GONE); 
       viewHolder.a.setVisibility(View.VISIBLE); 
       notifyDataSetChanged(); 
      }else { 
       viewHolder.a.setVisibility(View.GONE); 
       viewHolder.b.setVisibility(View.VISIBLE); 
       notifyDataSetChanged(); 
      } 

     } 
    }); 

    convertView.setTag(viewHolder); 
    return convertView; 
} 

customlayoutコードのように私のコードは、私はいつも、以下の別の方法のようにTextViewに

が、それをクリックしたときに

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="150dp"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       android:src="@drawable/bg"/> 
      <TextView 
       android:id="@+id/textView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentRight="true"/> 
     </RelativeLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <LinearLayout 
       android:id="@+id/a" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:visibility="gone"> 
       <Button 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="button a"/> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/b" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:visibility="visible"> 
       <Button 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="button b"/> 
      </LinearLayout> 
     </LinearLayout> 
</LinearLayout> 

それは、この方法のようにショーのあるべきです、ちょうどAのように、まだsetVisibility(View.INVISIBLE)のように、そのようなスペースを取るビューsetVisibility(View.GONE) Aビューが表示されているもののBビューが消えてしまったが、それはまだ

スペースを取るされていないため、なぜそのように振る舞うだろうか?それを解決するにはどうすればよいですか? ありがとうございます。

答えて

0

LinearLayoutwrap_contentとお試しください。このよう

-

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="150dp"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       android:src="@drawable/bg"/> 
      <TextView 
       android:id="@+id/textView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentRight="true"/> 
     </RelativeLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <LinearLayout 
       android:id="@+id/a" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:visibility="gone"> 
       <Button 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="button a"/> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/b" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:visibility="visible"> 
       <Button 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="button b"/> 
      </LinearLayout> 
     </LinearLayout> 
</LinearLayout> 
+0

私はそれを試してみるが、それは – PPTing

+0

がスペースを取っているかどうか確認するために階層ビューアを参照してください動作しません。 – jaibatrik

+0

http://developer.android.com/tools/help/hierarchy-viewer.html – jaibatrik

関連する問題