从可扩展视图中获取复选框值
Get checkbox value from expandableview
我知道之前问过类似的问题,但他们没有解决我的问题。
我正在创建一个复选框可扩展视图,其数据来自某些 Api。现在我想要 activity.
中所有选中的复选框值
我得到了所有值(我提到了另一个问题 Expandable check box),我得到的这个值是 return([Pair{4 4}, Pair{3 3}, Pair{0 0}, Pair{3 6}, Pair{1 5}, Pair{3 7}, Pair{4 3}, Pair{3 4}, Pair{1 6}, Pair{4 2}, Pair{3 5}]
)。现在我怎样才能从这个值中获得价值?
private final Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();
和
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.expandable_group_child, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.expandableChild);
final CheckBox cb = (CheckBox) convertView.findViewById(R.id.childCkBox);
// add tag to remember groupId/childId
final Pair<Long, Long> tag = new Pair<Long, Long>(
getGroupId(groupPosition),
getChildId(groupPosition, childPosition));
cb.setTag(tag);
// set checked if groupId/childId in checked items
cb.setChecked(mCheckedItems.contains(tag));
// set OnClickListener to handle checked switches
cb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final CheckBox cb = (CheckBox) v;
final Pair<Long, Long> tag = (Pair<Long, Long>) v.getTag();
if (cb.isChecked()) {
mCheckedItems.add(tag);
//mCheckBoxData.put(getGroupId(groupPosition),
getChildId(groupPosition, childPosition));
} else {
mCheckedItems.remove(tag);
//mCheckBoxData.remove(getGroupId(groupPosition),getChildId(groupPosition, childPosition));
}
}
});
txtListChild.setText(childText);
return convertView;
}
在Activity中:
private Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();
mCheckedItems = listAdapter.getCheckedItems();
System.out.println(mCheckedItems);
我现在知道如何从这种类型中检索数据了。
编辑
我有多个组,所有数据都来自 Api。
试试这个
创建界面AdapterCallback.java
interface AdapterCallback {
void onMethodCallback(int pos, String name);
}
在您的适配器中
private AdapterCallback mAdapterCallback;
//constructor
public Adapter(Context context, ArrayList<DataClass> arrayList, AdapterCallback callback) {
this.context = context;
this.arrayList = arrayList;
this.mAdapterCallback = callback;
}
在您选中/取消选中复选框的获取视图方法调用中
mAdapterCallback.onMethodCallback(rowItem.getPos(), rowItem.getName());
在您的 activity 中实现这样的界面
public class MainActivity extends AppCompatActivity implements AdapterCallback
并像这样 activity 覆盖你的接口方法
@Override
public void onMethodCallback(int pos, String name) {
Log.d("interface", "calling");
Log.d("pos", ""+pos);
Log.d("name", name);
}
我知道之前问过类似的问题,但他们没有解决我的问题。
我正在创建一个复选框可扩展视图,其数据来自某些 Api。现在我想要 activity.
中所有选中的复选框值我得到了所有值(我提到了另一个问题 Expandable check box),我得到的这个值是 return([Pair{4 4}, Pair{3 3}, Pair{0 0}, Pair{3 6}, Pair{1 5}, Pair{3 7}, Pair{4 3}, Pair{3 4}, Pair{1 6}, Pair{4 2}, Pair{3 5}]
)。现在我怎样才能从这个值中获得价值?
private final Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();
和
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.expandable_group_child, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.expandableChild);
final CheckBox cb = (CheckBox) convertView.findViewById(R.id.childCkBox);
// add tag to remember groupId/childId
final Pair<Long, Long> tag = new Pair<Long, Long>(
getGroupId(groupPosition),
getChildId(groupPosition, childPosition));
cb.setTag(tag);
// set checked if groupId/childId in checked items
cb.setChecked(mCheckedItems.contains(tag));
// set OnClickListener to handle checked switches
cb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final CheckBox cb = (CheckBox) v;
final Pair<Long, Long> tag = (Pair<Long, Long>) v.getTag();
if (cb.isChecked()) {
mCheckedItems.add(tag);
//mCheckBoxData.put(getGroupId(groupPosition),
getChildId(groupPosition, childPosition));
} else {
mCheckedItems.remove(tag);
//mCheckBoxData.remove(getGroupId(groupPosition),getChildId(groupPosition, childPosition));
}
}
});
txtListChild.setText(childText);
return convertView;
}
在Activity中:
private Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();
mCheckedItems = listAdapter.getCheckedItems();
System.out.println(mCheckedItems);
我现在知道如何从这种类型中检索数据了。
编辑
我有多个组,所有数据都来自 Api。
试试这个
创建界面AdapterCallback.java
interface AdapterCallback {
void onMethodCallback(int pos, String name);
}
在您的适配器中
private AdapterCallback mAdapterCallback;
//constructor
public Adapter(Context context, ArrayList<DataClass> arrayList, AdapterCallback callback) {
this.context = context;
this.arrayList = arrayList;
this.mAdapterCallback = callback;
}
在您选中/取消选中复选框的获取视图方法调用中
mAdapterCallback.onMethodCallback(rowItem.getPos(), rowItem.getName());
在您的 activity 中实现这样的界面
public class MainActivity extends AppCompatActivity implements AdapterCallback
并像这样 activity 覆盖你的接口方法
@Override
public void onMethodCallback(int pos, String name) {
Log.d("interface", "calling");
Log.d("pos", ""+pos);
Log.d("name", name);
}