Javascript Android微调器和复选框OnClick事件
我对android中的微调器和复选框的触发事件有一些问题。所以基本上我要做的是,首先,当从spinner中选择某个对象时,我的tableOri将出现。选中该复选框后,tableOri将被隐藏并替换为tableSuggested。首先应该隐藏这两个表 以下是我的route_planning.xml: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
<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语句来检查所选微调器值并执行隐藏/显示事件。谢谢!