2016-07-07 51 views
0

我是Android编程的新手,现在我想为2视图创建一个ViewFlipper或ViewSwitcher,它将在1和2列之间切换视图。问题是第一个视图是可以的,但是当我使用showNext()或showPrevious()时,第二个视图显示为空白,并且我已经完全不知道什么是错误的。我曾尝试使用ViewFlipper和ViewSwitcher获得相同的结果。ViewFlipper/ViewSwitcher第二视图清空

layout_devicelistmainswitcher.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 


<Button 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:contentDescription="Grid/List View" 
    android:id="@+id/viewbutton" 
    android:background="@drawable/viewicon" 
    android:layout_gravity="right" /> 

<ViewFlipper 
     android:id="@+id/vflipper" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

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

      <GridView 
       android:numColumns="1" 
       android:gravity="center" 
       android:columnWidth="100dp" 
       android:stretchMode="columnWidth" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/grid" 
       android:scrollbars="none" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="200dp" 
      android:layout_height="200dp"> 

      <GridView 
       android:numColumns="2" 
       android:gravity="center" 
       android:columnWidth="100dp" 
       android:stretchMode="columnWidth" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/grid_l" 
       android:scrollbars="none" /> 
     </LinearLayout> 

</ViewFlipper> 

mainactivity.java

public class activity_devicelist extends AppCompatActivity { 

GridView grid; 
Boolean viewtype = true; 
ViewFlipper switcher; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_devicelistmainswitcher); 

    Button button = (Button) findViewById(R.id.viewbutton); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(activity_devicelist.this, "Button Clicked", Toast.LENGTH_SHORT).show(); 
      switcher = (ViewFlipper) findViewById(R.id.vflipper); 
      switcher.showPrevious(); 
     } 
    }); 
} 

}

回答

0

把你findViewById出像下面的ñ它应该工作

switcher = (ViewFlipper) findViewById(R.id.vflipper); 

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast.makeText(activity_devicelist.this, "Button Clicked", Toast.LENGTH_SHORT).show(); 

     switcher.showPrevious(); 
    } 
}); 
+0

试过,以前已经,但仍然一样。刚刚再次尝试,也一样。 –

+0

@ZiaShams检查你的gridview –

+0

谢谢Tarun,但是两个GridView都是同样的复制粘贴,除了列数,所以如果第一个GridView出现在切换器中,为什么不是第二个呢?另外我交换了第一个和第二个GridView,但是相同。 –