使用ViewFlipper用的onclick切换视图。 [英] Using ViewFlipper with onclick to switch views.

查看:201
本文介绍了使用ViewFlipper用的onclick切换视图。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

林完全以新到Android,所以裸跟我的家伙。即时通讯使用ViewFLipper与Random.nextInt()。改变布局的onClick(按钮)。现在我有3个XML布局。 1_view.xml 2_view.xml 3_view.xml。从1_view.xml我有一个按钮开始出现。当按下按钮,我应该得到一个随机的布局。有用。但问题是,现在,我有时会得到相同的布局(1_view.xml)。当用户点击一个按钮(1_view.xml),我希望他们去我已经离开了布局(2_view.xml和3_view.xml)。你能帮我吗。谢谢。 (soory,我的英语)

codeS

  main.xml中 < RelativeLayout的
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
        机器人:方向=垂直
        机器人:填充=10dip>        <的TextView
            机器人:ID =@ + ID / TVLeft
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_centerVertical =真
            机器人:layout_gravity =左|顶
            机器人:文字=0
            机器人:文字颜色=#4CB848
            机器人:TEXTSIZE =40SP
            机器人:文字样式=大胆/>        <的TextView
            机器人:ID =@ + ID / TVRight
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_alignParentRight =真
            机器人:layout_centerVertical =真
            机器人:layout_toRightOf =@ + ID / TVLeft
            机器人:重力=右
            机器人:文字=0
            机器人:文字颜色=#FF0000
            机器人:TEXTSIZE =40SP
            机器人:文字样式=大胆/>
    < / RelativeLayout的>    < ViewFlipper
        机器人:ID =@ + ID / viewFlipper1
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT>        <包括
            机器人:ID =@ + ID / 1_View
            布局=@布局/ 1_view/>        <包括
            机器人:ID =@ + ID / 2_View
            布局=@布局/ 2_view/>        <包括
            机器人:ID =@ + ID / 3_View
            布局=@布局/ 3_view/>
    < / ViewFlipper>
< / LinearLayout中>Main.java
        // FlipperView
        MyViewFlipper =(ViewFlipper)findViewById(R.id.viewFlipper1);        TVRight =(的TextView)findViewById(R.id.TVRight);
        TVLeft =(的TextView)findViewById(R.id.TVLeft);        // 1_view.xml
        Q1_btn1 =(按钮)findViewById(R.id.btn_1);
        Q1_btn2 =(按钮)findViewById(R.id.btn_2);
        Q1_btn3 =(按钮)findViewById(R.id.btn_3);
        Q1_btn4 =(按钮)findViewById(R.id.btn_4);        Q1_btn1.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){
                Wrongnum ++;
                WrongResult.setText(Integer.toString(Wrongnum));            }        });        Q1_btn2.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){                Rightnum ++;
                RightResult.setText(Integer.toString(Rightnum));                随机RandomView =新的随机();
                MyViewFlipper.setDisplayedChild(RandomView.nextInt(3));            }
        });
        Q1_btn3.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){
                Wrongnum ++;
                WrongResult.setText(Integer.toString(Wrongnum));            }
        });
        Q1_btn4.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){
                Wrongnum ++;
                WrongResult.setText(Integer.toString(Wrongnum));            }
        });


解决方案

您可以在code做到这一点:

 随机RandomView =新的随机();
 INT nextViewIndex = RandomView.nextInt(3);
 而(nextViewIndex == MyViewFlipper.getDisplayedChild()){
     nextViewIndex = RandomView.nextInt(3);
 }
 MyViewFlipper.setDisplayedChild(nextViewIndex);

基本上只是调用Random.nextInt(),直到它不匹配当前viewFlipper的索引。

要只显示一个viewFlipper一次随机:

  // Intialize这个曾经
清单<整数GT; vfIndices =新的ArrayList<整数GT;();
的for(int i = 0; I< MyViewFlipper.getChildCount();我++){
   vfIndices.add(ⅰ);
}//当按钮被点击
如果(vfIndices.size()== 0){
   返回; //没有更多的观点鳍展现!
}
INT viewIndex = RandomView.nextInt(vfIndices.size());
MyViewFlipper.setDisplayedChild(vfIndices.get(viewIndex));
vfIndicies.remove(viewIndex);

的想法是使用ArrayList跟踪尚未示出的viewFlipper索引。当点击按钮,从这个阵列选择一个随机指数和viewFlipper设置。然后,从ArrayList中的索引。该按钮被点击下一页的时候,它会显示剩余的鳍状肢之一。

Im totaly new to android, so bare with me guys. im using ViewFLipper with Random.nextInt(). to change layouts onClick (Button). Now i have 3 xml layouts. 1_view.xml 2_view.xml 3_view.xml. Starting from 1_view.xml i have a button there. when button clicked i should get a random layout. it works. But the problem is now, sometimes i get the same layout (1_view.xml). When a user clicks a button on (1_view.xml), i want them to go to the layouts i have left (2_view.xml and 3_view.xml). can u help me. thanks. (soory for my english)

Codes

Main.xml

 <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dip" >

        <TextView
            android:id="@+id/TVLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_gravity="left|top"
            android:text="0"
            android:textColor="#4CB848"
            android:textSize="40sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/TVRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/TVLeft"
            android:gravity="right"
            android:text="0"
            android:textColor="#FF0000"
            android:textSize="40sp"
            android:textStyle="bold" />
    </RelativeLayout>

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

        <include
            android:id="@+id/1_View"
            layout="@layout/1_view" />

        <include
            android:id="@+id/2_View"
            layout="@layout/2_view" />

        <include
            android:id="@+id/3_View"
            layout="@layout/3_view" />
    </ViewFlipper>
</LinearLayout>

Main.java
        // FlipperView
        MyViewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper1);

        TVRight = (TextView) findViewById(R.id.TVRight);
        TVLeft = (TextView) findViewById(R.id.TVLeft);

        // 1_view.xml
        Q1_btn1 = (Button) findViewById(R.id.btn_1);
        Q1_btn2 = (Button) findViewById(R.id.btn_2);
        Q1_btn3 = (Button) findViewById(R.id.btn_3);
        Q1_btn4 = (Button) findViewById(R.id.btn_4);

        Q1_btn1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Wrongnum++;
                WrongResult.setText(Integer.toString(Wrongnum));

            }

        });

        Q1_btn2.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Rightnum++;
                RightResult.setText(Integer.toString(Rightnum));

                Random RandomView = new Random();
                MyViewFlipper.setDisplayedChild(RandomView.nextInt(3));

            }
        });
        Q1_btn3.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Wrongnum++;
                WrongResult.setText(Integer.toString(Wrongnum));

            }
        });
        Q1_btn4.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Wrongnum++;
                WrongResult.setText(Integer.toString(Wrongnum));

            }
        });

解决方案

You can do this in your code:

 Random RandomView = new Random();
 int nextViewIndex = RandomView.nextInt(3);
 while (nextViewIndex == MyViewFlipper.getDisplayedChild()) {
     nextViewIndex = RandomView.nextInt(3);
 }
 MyViewFlipper.setDisplayedChild(nextViewIndex);

Basically just call Random.nextInt() until it doesn't match current viewFlipper's index.

To only show a viewFlipper once randomly:

// Intialize this once
List<Integer> vfIndices = new ArrayList<Integer>();
for (int i = 0; i < MyViewFlipper.getChildCount(); i++) {
   vfIndices.add(i);
}

// when button is clicked
if (vfIndices.size() == 0) {
   return; // no more view flipper to show!
}
int viewIndex = RandomView.nextInt(vfIndices.size());
MyViewFlipper.setDisplayedChild(vfIndices.get(viewIndex));
vfIndicies.remove(viewIndex);

The idea is use an ArrayList to keep track of the viewFlipper index that has not been shown. When button is clicked, pick an index randomly from this array and set the viewFlipper to. Then remove that index from the ArrayList. Next time the button is clicked, it will show one of the remaining flippers.

这篇关于使用ViewFlipper用的onclick切换视图。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆