我试图用切换按钮实现一个列表视图。一切进展顺利,问题出在切换按钮的方法setChecked
上。向下进入列表视图时,该按钮会自动设置为偏移。我正在使用自定义适配器,这是getView
方法:
public View getView(final int position, View convertView, ViewGroup parent) {
final Holder holder = new Holder();
View rowView = inflater.inflate(R.layout.list_view_layout,null);
holder.tv = (TextView) rowView.findViewById(R.id.tv_item);
holder.tb = (ToggleButton) rowView.findViewById(R.id.tgl_status);
holder.tv.setText(Name.get(position));
holder.tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
holder.tb.setChecked(isChecked);
Toast.makeText(activity, Name.get(position) + "ON", Toast.LENGTH_LONG).show();
} else {
// The toggle is disabled
Toast.makeText(activity, "OFF", Toast.LENGTH_LONG).show();
holder.tb.setChecked(isChecked);
}
}
});
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(activity, "You Clicked "+Name.get(position), Toast.LENGTH_LONG).show();
}
});
return rowView;
}
问题在于:
owner.tb.setChecked(isChecked);
总是错误的。
我的
list_view_layout.xml
文件是:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ToggleButton
android:id="@+id/tgl_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
我正在使用使用此自定义适配器的片段。
最佳答案
我在这里没有问题。
您正在/ cc中选中/取消选中此ToggleButton
。也就是说:当您选中此CheckedChangeListener
时,您的ToggleButton
将再次对其进行检查。您正在复制不需要的操作。
如果您实际上是根据onCheckedChange
中Weather
的ArrayList
中的一个对象(比如说Weathers
)检查它,那么您应该进行以下操作:
if (weatherList.get(position).isChecked) {
holder.tb.setChecked(true);
} else {
holder.tb.setChecked(false);
}
关于android - setChecked无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31495196/