Android 在CustomList视图中切换按钮
我有一个customlist视图,所有行都有切换按钮。我有一个用于ToggleButton的onlick listner,我正在尝试将listview中所有toggle按钮的状态设置为false,我展示的按钮除外。我已经在下面发布了适配器的代码。请帮我做这个 为了使其更简单,我必须在按下/单击时将ToggleButton状态设置为True,并将所有其他ToggleButton状态设置为False。而且像一个单选组按钮。请告知Android 在CustomList视图中切换按钮,android,Android,我有一个customlist视图,所有行都有切换按钮。我有一个用于ToggleButton的onlick listner,我正在尝试将listview中所有toggle按钮的状态设置为false,我展示的按钮除外。我已经在下面发布了适配器的代码。请帮我做这个 为了使其更简单,我必须在按下/单击时将ToggleButton状态设置为True,并将所有其他ToggleButton状态设置为False。而且像一个单选组按钮。请告知 package Test.in.example.testairligh
package Test.in.example.testairlight;
import java.util.ArrayList;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
public class PaAdapter extends ArrayAdapter<PaModel> {
SQLiteDatabase db;
private DBHelper dbH;
private ArrayList<PaModel> objects;
public PaAdapter(Context context, int textViewResourceId, ArrayList<PaModel> objects) {
super(context, textViewResourceId, objects);
this.objects = objects;
}
public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
final Context cc=parent.getContext();
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.pa_list_item, null);
}
PaModel i = objects.get(position);
if (i != null) {
TextView ttd = (TextView) v.findViewById(R.id.devicelocation);
final TextView mtd = (TextView) v.findViewById(R.id.deviceid);
TextView dzone = (TextView) v.findViewById(R.id.txtzonedetail);
final ToggleButton togglePA = (ToggleButton) v.findViewById(R.id.togglePA);
final ToggleButton toggleAlert = (ToggleButton) v.findViewById(R.id.toggleAlert);
final ToggleButton toggleListen = (ToggleButton) v.findViewById(R.id.toggleListen);
if (ttd != null){
ttd.setText(i.getDevicelocation());
}
if (mtd != null){
mtd.setText(String.valueOf(i.getDeviceid()));
}
toggleListen.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//// Set Everything to OFF State
//// Turn ON only the active Item
}
});
////// Listen Button
if (dzone !=null){
dzone.setText(i.getDevicezonedetail());
}
}
return v;
}
}
package Test.in.example.testairlight;
导入java.util.ArrayList;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入android.widget.ToggleButton;
公共类PaAdapter扩展了ArrayAdapter{
sqlitedb数据库;
私人胸径;
私有ArrayList对象;
公共PaAdapter(上下文上下文、int-textViewResourceId、ArrayList对象){
超级(上下文、textViewResourceId、对象);
this.objects=对象;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
final Context cc=parent.getContext();
如果(v==null){
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
v=充气机充气(R.layout.pa\u列表项,空);
}
PaModel i=objects.get(位置);
如果(i!=null){
TextView ttd=(TextView)v.findViewById(R.id.devicelocation);
最终文本视图mtd=(文本视图)v.findViewById(R.id.deviceid);
TextView dzone=(TextView)v.findViewById(R.id.txtzonedetail);
最终ToggleButton togglePA=(ToggleButton)v.findViewById(R.id.togglePA);
最终ToggleButton ToggleLert=(ToggleButton)v.findViewById(R.id.ToggleLert);
最终ToggleButton toggleListen=(ToggleButton)v.findViewById(R.id.toggleListen);
如果(ttd!=null){
ttd.setText(i.getDevicelocation());
}
如果(mtd!=null){
mtd.setText(String.valueOf(i.getDeviceid());
}
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
////将一切设置为关闭状态
////仅启用活动项
}
});
//////收听按钮
如果(dzone!=null){
dzone.setText(i.getDevicezonedetail());
}
}
返回v;
}
}
像这样的东西
toggleListen.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// do whatever you want here
togglePA.setChecked(false);
toggleAlert.setChecked(false);
}
}
});
我不知道是要将列表中的所有按钮都设置为false,还是仅将当前列表项中的按钮设置为false。 让我们面对第一个问题:
ArrayList<ToggleButton[]> tButtons = new ArrayList<ToggleButton[]>();
现在您已经准备好了所有的切换按钮,可以进行修改了
下面是代码:
toggleListen.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
for(ToggleButton[] tButtonsArray : tButtons) {
for(ToggleButton tButton : tButtonsArray) {
if(tButton == buttonView) {
tButton.setChecked(true);
} else {
tButton.setChecked(false);
}
}
}
}
}
});
如果您只想将同一列表项的按钮设置为false,请告诉我:)
编辑:
也许我应该说,在我看来,这不是最好的解决办法。
我实际上认为你应该在你的模型中的某个地方有数据(真/假)。
然后,您可以只操作模型,并将模型数据放回视图(切换按钮)以显示。您想将列表项(单击切换按钮的位置)中的所有按钮设置为false,还是将列表中的所有按钮都设置为false?
toggleListen.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
for(ToggleButton[] tButtonsArray : tButtons) {
for(ToggleButton tButton : tButtonsArray) {
if(tButton == buttonView) {
tButton.setChecked(true);
} else {
tButton.setChecked(false);
}
}
}
}
}
});