Android Spinner& CheckBox OnClick事件

时间:2014-07-27 08:40:27

标签: javascript android checkbox

我在spinner的on触发事件和android中的复选框有问题。所以基本上我要做的是首先选择spinner的东西时,我的 tableOri 会出现。选中该复选框后,将隐藏tableOri并替换为 tableSuggested 。这两个表应首先隐藏

这是我的route_planning.xml:

<Spinner
  android:id="@+id/spinner"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" />

<CheckBox
    android:id="@+id/cbMostCommuter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:textSize="8sp"
    android:text="Most Commuter Routes" />

<TableLayout 
     android:id = "@+id/tableOri"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_weight="0"
     android:padding="5dp">

 <TableRow android:layout_height="wrap_content">
     <TextView
         android:text="10009"
         android:paddingRight="10dp"
         android:layout_height="wrap_content"
         />
     <TextView
         android:text="Bt Merah Int"
         android:layout_height="wrap_content"
         />
     <TextView
         android:text="0 mins"
         android:paddingLeft="10dp"
         android:layout_height="wrap_content"
         />
 </TableRow>
</TableLayout>

<TableLayout 
     android:id = "@+id/tableSuggested"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_weight="0"
     android:padding="5dp">

 <TableRow android:layout_height="wrap_content">
     <TextView
         android:text="10009"
         android:paddingRight="10dp"
         android:layout_height="wrap_content"
         />
     <TextView
         android:text="Bt Merah Int                          "
         android:layout_height="wrap_content"
         />
     <TextView
         android:text="0 mins"
         android:paddingLeft="10dp"
         android:layout_height="wrap_content"
         />
 </TableRow>

我执行所有onCLick事件的地方:

private CheckBox cbMostCommuter;
private Spinner spinner;
private static final String[]paths = {"Trunk Bus Service", "268", "269", "272", "275"};
ArrayAdapter<CharSequence> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.route_planning);
    adapter = new ArrayAdapter<CharSequence>(this,
            android.R.layout.simple_spinner_item, paths);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
            TableLayout tableOri = (TableLayout)findViewById(R.id.tableOri);
            tableOri.setVisibility(View.VISIBLE);

            cbMostCommuter = (CheckBox) findViewById(R.id.cbMostCommuter);
            cbMostCommuter.setOnClickListener(new OnClickListener(){
                public void onClick(View v){
                    TableLayout tableOri = (TableLayout)findViewById(R.id.tableOri);
                    TableLayout tableSuggested = (TableLayout)findViewById(R.id.tableSuggested);
                    if(cbMostCommuter.isChecked() == true){
                        tableSuggested.setVisibility(View.VISIBLE);
                        tableOri.setVisibility(View.INVISIBLE);
                    }
                    else{
                        tableSuggested.setVisibility(View.INVISIBLE);
                        tableOri.setVisibility(View.VISIBLE);
                    }
                }
            });
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0){

        }
    });
}

但是,即使没有从微调器中选择任何内容,我的两张桌子都会出现。

当我选中并取消选中该复选框时,它会隐藏或显示该表格。但不知何故,如果第一张表不存在,第二张表将不会向上移动。

我想知道我的代码中哪一部分出错了。

提前致谢。

1 个答案:

答案 0 :(得分:2)

首先,尝试在java代码中使用setVisibility(View.GONE)而不是setVisibility(View.INVISIBLE)。其次,在表格布局中使用android:visibility="gone"。按照this了解上述状态之间的区别。

您是否使用 RelativeLayout 作为指定小部件的父级?