我已经在列表中实现了带有复选框的名称,这里我的目的是检查复选框并获取相应的名称。在这里,我已经在适配器和活动类中编写代码,但是我没有得到任何价值,也没有显示任何错误。如何获得选定的复选框值
这里我的适配器代码..
public Add_member_adapter(Context a, ArrayList<ItemsModel> d) {
context = a;
data = d;
checkedHolder = new boolean[data.size()];
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
if (data.size() <= 0)
return 1;
return data.size();
}
public final Object getItem(int position) {
return data.get(position);
}
public final long getItemId(int position) {
return position;
}
public static class ViewHolder {
public TextView Name, UserId_Fk;
CheckBox chkbox;
}
public View getView(final int position, View convertView, ViewGroup parent) {
Log.d("getview:", "position=" + position);
vi = convertView;
final ViewHolder holder;
if (convertView == null) {
vi = inflater.inflate(R.layout.add_members_list_item, null);
holder = new ViewHolder();
holder.Name = (TextView) vi.findViewById(R.id.Name);
holder.UserId_Fk = (TextView) vi.findViewById(R.id.CusId_Fk);
holder.chkbox = (CheckBox) vi.findViewById(R.id.chkbox);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
if (data.size() <= 0) {
vi.setVisibility(View.GONE);
} else {
tempValues = null;
tempValues = (ItemsModel) data.get(position);
holder.Name.setText(tempValues.getItemName().toString());
Log.i(TAG, "Name " + tempValues.getItemName().toString());
holder.UserId_Fk.setText(tempValues.getUserId_Fk().toString());
holder.chkbox.setChecked(false);
holder.chkbox.setChecked(checkedHolder[position]);
Log.i(TAG, "Position " + checkedHolder[position]);
holder.chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
checkedHolder[position] = isChecked;
Log.i(TAG, "Position " + checkedHolder[position]);
}
});
}
return vi;
}
在活动...
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// String Name = list.getItemAtPosition(position).toString();
// CheckBox cb = (CheckBox) view.findViewById(R.id.chkbox);
// TextView tv = (TextView) view.findViewById(R.id.Name);
for (int i = 0; i < adapter.getCount(); i++) {
if (adapter.checkedHolder[i]) {
// get all name values that checked by user
Name = ((TextView) findViewById(R.id.Name)).getText()
.toString();
Log.i(TAG, "Name " + Name);
}
}
}
});
首先,什么是适配器的超级类?为什么你返回1,当你的数据列表是空的?如果列表为空,则不必在'getView()'中隐藏视图。 –
并提供您的代码ItemsModel –
好吧,我会改变这一点,可以指导我为什么选中的值不会到来 –