我已经搜索过这个问题的高低,但我找不到具体的东西。
基本上,我在ListView中有一个朋友列表,我正在尝试通过选择特定的朋友来创建一个组。为此,我创建了一个带有SearchView和ListView的Activity。搜索将过滤并显示我想要添加的朋友。为此,我想使用一个复选框。然后,所有“已检查”的朋友将被传递到另一个可以完成组创建的活动。
活动的布局有$session->set('_security_'.$security_context_name, serialize($token));
。
我编写了自己的适配器,这个适配器膨胀了ListView的行布局。适配器的布局有ListView
我已明确添加。
所以活动布局有:ListView 行布局有:TextView和Checkbox
但我遇到的问题是:
1.当视图刷新并且复选框被重新创建为未选中时,尝试在滚动/搜索列表视图时保持选中复选框 - 我通过维护单击的复选框列表暂时解决了这个问题。我在适配器的CheckBox
方法中执行此操作。
2.尝试确定复选框属于ListView的哪一行。我需要这个来创建我的一群朋友。
3.允许编辑所选朋友列表 - 在创建组之前添加/删除朋友。
修改
添加另一个图表以显示其工作原理。
所以从第一个活动开始,我去第二个搜索并添加朋友。一旦我选择了我的朋友,当我点击“确定”按钮时,我会将列表发送回我的第一个活动。
答案 0 :(得分:1)
我终于想通了。
如上所述,我不确定如何通过"控制"选中复选框后返回活动。这是一个问题,因为复选框是适配器充气的布局的一部分。
在适配器中,我将其设置为通过"控制"返回活动以处理复选框上的检查:
checkbox.setOnCheckedChangeListener((SearchFriendActivity) context);
在SearchFriendActivity中,复选框上的检查可以通过以下方式处理:
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.i(TAG, "Inside onCheckedChanged");
//The below code line will get the position of the row item
int pos = friendlistview.getPositionForView(buttonView);
if(pos != ListView.INVALID_POSITION)
{
//Logic Here
}
}
请记住活动中的implements CompoundButton.OnCheckedChangeListener
。
一个简洁的小教程 here
答案 1 :(得分:0)
方法AlertDialog
有setMultiChoiceItems()
您可以使用复选框列表进行对话。它有帮助吗?
答案 2 :(得分:0)
我不知道它是否有效,因为我现在不在我的开发电脑上,我无法向您发布代码。但试试这个:
1实现复选框事件监听器(我不确定onCheckChanged())并将复选框值或索引存储在列表中(更好地使用索引)
2如果你有商店索引,你可以告诉哪个复选框属于哪一行。如果没有,也许你应该将setTag()设置为行或行的TextView,这样你就可以在意图到下一个活动之前对它进行比较。
3你不能告诉我们这个小组使用什么观点。很难回答,但我认为你从getIntent()获得的价值可能是一个列表,所以你可以使用删除按钮显示一些视图。因此,只需在创建组之前从列表中删除值。 为了添加更多朋友,也许你应该将列表意图重新用于第一个活动,并选中它检查的复选框,并允许用户再次检查/取消选中它。之后,再次将其用于该群体活动。
答案 3 :(得分:0)
这是一项简单的任务,请按照以下步骤操作:
如果您对填充列表视图不够了解,请尝试使用此链接
http://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html
如果您遇到任何问题,请与我联系。
快乐的编码!!