我有一个包含listview的活动。 (它使用自定义适配器,比如说adap1)
我也有一个开关,
<Switch
android:id="@+id/mySwitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="on/off" />
初始化如下:
Switch switch1; //global
switch1 = (Switch) findViewById(R.id.mySwitch); //inside onCreate()
if (switch1 != null)
{
switch1.setOnCheckedChangeListener(this);
}
else
{
Log.i(tag, "switch1 is null");
}
,点击后,列表视图会更改(新的视图会使用另一个自定义适配器,具有不同的布局和视图,比如说Adap2)。 Adap2有一个复选框作为行中的一个视图。
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if(isChecked)
{
adapter1 = new Adap1 (this, al);
lv.setAdapter(adapter1);
}
else
{
adapter2 = new Adap2 (this, al);
lv.setAdapter(adapter2);
}
}
然后我在onCreate();
中调用它lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if(switch1.isChecked())
{
Log.i(tag, "Switch is checked");
}
else
{
Log.i(tag, "Switch is not checked");
}
但是,“切换已检查”永远不会显示。
是不是因为我使用了两个不同的自定义适配器,每个适配器都有不同的XML,而且代码不知道我使用的是哪个View?