Android 如何在Listview中获取复选框选中的edittext值?
我有一个列表视图,如下所示:- (复选框)文本[EditText] (复选框)文本[EditText] (复选框)文本[EditText] … 我真正想要的是得到选中复选框的所有EditText的值 我使用classAndroid 如何在Listview中获取复选框选中的edittext值?,android,checkbox,android-edittext,Android,Checkbox,Android Edittext,我有一个列表视图,如下所示:- (复选框)文本[EditText] (复选框)文本[EditText] (复选框)文本[EditText] … 我真正想要的是得到选中复选框的所有EditText的值 我使用classMyItem获取和设置值,classMyAdpater设置活动的适配器和项目布局以及classMyView。布局不允许使用onItemClick/onItemSelected方法,因为布局具有复选框和编辑文本,因此未将其作为列表项单击 如果需要,我将添加更多信息。您可能需要设置Ite
MyItem
获取和设置值,classMyAdpater
设置活动的适配器和项目布局以及classMyView
。布局不允许使用onItemClick
/onItemSelected
方法,因为布局具有复选框和编辑文本,因此未将其作为列表项单击
如果需要,我将添加更多信息。您可能需要设置ItemScanFocus才能访问行中的视图单击
查看这篇文章您可能需要设置ItemScanFocus才能访问行中的视图单击
查看这篇文章当您使用适配器构建ListView时,为每个元素创建一个包含新复选框视图的数组列表
ArrayList<CheckBox> a = new ArrayList<CheckBox>(16);
ArrayList<EditText> e = new ArrayList<EditText>(16);
public class Adapterwhatever extends asdljbg {
public View getChildVieworsomething(AdapterView<> viwe, int position..ydadayda) {
//make sure you reset these
a.add(new (CheckBox) findViewById(R.id.whateverman));
b.add(new (EditText) findViewById(R.id.anEditText));
}
在使用适配器构建ListView时,为每个元素创建一个包含新复选框视图的数组列表
ArrayList<CheckBox> a = new ArrayList<CheckBox>(16);
ArrayList<EditText> e = new ArrayList<EditText>(16);
public class Adapterwhatever extends asdljbg {
public View getChildVieworsomething(AdapterView<> viwe, int position..ydadayda) {
//make sure you reset these
a.add(new (CheckBox) findViewById(R.id.whateverman));
b.add(new (EditText) findViewById(R.id.anEditText));
}
我用以下方式做了类似的事情(用作对话框)。我不使用复选框,我只是处理列表并查找所有非空的编辑文本 适配器
public class CursorAdapter_EditText extends SimpleCursorAdapter {
private static Cursor c;
private Context context;
public static String[] quantity;
private int layout;
public CursorAdapter_EditText(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
CursorAdapter_EditText.c = c;
this.context = context;
this.layout = layout;
initializeQuantity(); // set array to hold contents od list edit text boxes
}
public static void initializeQuantity() {
quantity = new String[c.getCount()];
int i = 0;
while (i < c.getCount()) {
quantity[i] = "0"; // set all array quantities to 0
i++;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = View.inflate(context, layout, null);
final int pos = position;
View row = convertView;
c.moveToPosition(position);
TextView name = (TextView) row.findViewById(R.id.ListItem1);
TextView unit = (TextView) row.findViewById(R.id.ListItem2);
EditText qty = (EditText) row.findViewById(R.id.qty);
qty.setOnFocusChangeListener(new View.OnFocusChangeListener() { // save changes to the array when the user leaves an edit box
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
LinearLayout parent = (LinearLayout) v.getParent();
EditText qtyTemp = (EditText) parent.findViewById(R.id.qty);
quantity[pos] = qtyTemp.getText().toString();
}
}
});
name.setText(c.getString(1));
unit.setText(c.getString(3));
qty.setText(quantity[position]); // set the value in the edit box to the value stored in the array
return (row);
}
}
您可以添加一个数组来跟踪复选框状态,然后使用该数组而不是edittext中的值来运行
if
语句。我以以下方式做了类似的事情(用作对话框)。我不使用复选框,我只是处理列表并查找所有非空的编辑文本
适配器
public class CursorAdapter_EditText extends SimpleCursorAdapter {
private static Cursor c;
private Context context;
public static String[] quantity;
private int layout;
public CursorAdapter_EditText(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
CursorAdapter_EditText.c = c;
this.context = context;
this.layout = layout;
initializeQuantity(); // set array to hold contents od list edit text boxes
}
public static void initializeQuantity() {
quantity = new String[c.getCount()];
int i = 0;
while (i < c.getCount()) {
quantity[i] = "0"; // set all array quantities to 0
i++;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = View.inflate(context, layout, null);
final int pos = position;
View row = convertView;
c.moveToPosition(position);
TextView name = (TextView) row.findViewById(R.id.ListItem1);
TextView unit = (TextView) row.findViewById(R.id.ListItem2);
EditText qty = (EditText) row.findViewById(R.id.qty);
qty.setOnFocusChangeListener(new View.OnFocusChangeListener() { // save changes to the array when the user leaves an edit box
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
LinearLayout parent = (LinearLayout) v.getParent();
EditText qtyTemp = (EditText) parent.findViewById(R.id.qty);
quantity[pos] = qtyTemp.getText().toString();
}
}
});
name.setText(c.getString(1));
unit.setText(c.getString(3));
qty.setText(quantity[position]); // set the value in the edit box to the value stored in the array
return (row);
}
}
您可以添加一个数组来跟踪复选框状态,然后使用该数组而不是edittext中的值来运行if
语句