我使用扩展ArrayAdapter来填充ListView(List.java)的自定义适配器(ListAdapter.java)。 之后ListView行包含TextView和ToggleButton。访问ListView中的ToggleButtons
在List.java我可以注册点击的ListView行:
sett_list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, android.view.View view, int position, long id) {
,但我怎么能注册点击切换按钮,并得到该按钮的排的位置?
编辑:@MDMalik
在ListAdapter.java:
A):
View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.settings_row, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.option);
final ToggleButton toggle = (ToggleButton) rowView.findViewById(R.id.toggle);
B):
if (values2[position].equals("on")) {
toggle.setChecked(true);
} else {
toggle.setChecked(false);
}
C):
toggle.setTag(Integer.valueOf(position));
toggle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), Integer.valueOf(position) + " : Click", Toast.LENGTH_SHORT).show();
}
});
就是这样。现在我有点击按钮的位置。谢谢。
如何将结果写入数据库?
这样的事情(不工作):
toggle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (toggle.isChecked() == true) {
checked = 1;
myDB = SQLiteDatabase.openOrCreateDatabase("database.db", null);
myDB.execSQL("UPDATE " + TableName + " SET on_off_ = 'on' WHERE sett_ = '" + values[position] + "'");
myDB.close();
} else {
checked = 0;
myDB = SQLiteDatabase.openOrCreateDatabase("database.db", null);
myDB.execSQL("UPDATE " + TableName + " SET on_off_ = 'off' WHERE sett_ = '" + values[position] + "'");
myDB.close();
}
}
});
的意思是如何知道它是否被选中? – MDMalik
是的,并在哪个行(位置)被选中的按钮。 – mgulan
以及您在CustomAdapter中传递的内容。因为这是最重要的 – MDMalik