Javascript Android微调器和复选框OnClick事件

Javascript Android微调器和复选框OnClick事件,javascript,android,checkbox,Javascript,Android,Checkbox,我对android中的微调器和复选框的触发事件有一些问题。所以基本上我要做的是,首先,当从spinner中选择某个对象时,我的tableOri将出现。选中该复选框后,tableOri将被隐藏并替换为tableSuggested。首先应该隐藏这两个表 以下是我的route_planning.xml: <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height

我对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){

        }
    });
}
然而,即使没有从微调器中选择任何内容,我的两个表也会出现

当我勾选和取消勾选复选框时,它确实隐藏或显示了表格。但是如果第一张桌子不在那里,第二张桌子就不会向上移动

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


提前感谢。

首先,在java代码中尝试使用setVisibilityView.GONE而不是setVisibilityView.INVISIBLE。其次,在表格布局中使用android:visibility=gone。遵循以下步骤了解上述状态之间的差异。您是否使用RelativeLayout作为指定小部件的父级?

Downvoter mind指出原因?您在哪里调用了onItemSelected,或者需要覆盖它?@shylendra我已编辑了我的问题。你能看一下吗?非常感谢!它解决了这个问题。但剩下的唯一问题是,当我第一次运行活动时,即使没有从微调器中选择任何内容,tableOri仍然会出现。你知道为什么吗?android:visibility=gone属性阻止小部件出现在屏幕上。当微调器或其他视图被初始化时,您的代码可能会显示它……我已经找到了它的原因。因为默认情况下选择了第一个微调器项。我包含了一个if-else语句来检查所选微调器值并执行隐藏/显示事件。谢谢!