【发布时间】:2016-09-01 09:36:21
【问题描述】:
我有一个包含用户孩子信息的布局。假设此布局获取有关孩子的名字、姓氏和年龄的信息。我正在使用 EditText 进行输入。还有一个显示儿童过敏类型的微调器,在选择 1 过敏类型时,它必须从 web 服务获取其详细信息并将这些详细信息填充到文本视图中。
因此,用户可以通过这种方式添加任意数量的孩子。问题发生在那里。假设用户现在已经添加了 4 次该布局,他选择了孩子 1 的微调器并调用了服务,它获取信息并将其填充到添加的最后一个布局文本视图中。
正如预期的那样,详细信息应填写相应添加的每个布局的每个文本视图。
困惑:
- 如何准确获取点击了哪个视图,然后如何在该视图的相同布局中采取行动,而不是最近添加的那个?
- 我正在膨胀具有上面指定的特定字段集的布局。所以我正在维护添加的每个布局的数组列表,所以有没有办法在该布局中获得完全相同的视图及其对应的视图?
更新 1:我的问题的一些想法
有一个主要活动,它有一个名为“添加更多孩子”的按钮。当用户点击这个时,包含孩子信息的布局会添加到 ScrollView 的指定区域中,以便用户可以添加任意数量的孩子。
所以基本上我在下面绘制了一些视图,因为以下名为 children 的布局中有太多视图。但是这个布局显示了需要完成的工作类型。所以请看下面并有一些想法
为了演示,您可以看到不同的编辑文本和微调器。微调器从 Webs 服务获取更新,每个子组件可能从 Web 服务在微调器中加载不同的数据。这整个布局膨胀到主要活动中。在按钮上单击名为 Add Children 。等等那个按钮,我在滚动视图中添加这个
private View addChildLayout(int childLayoutid, LinearLayout Targetlayout) {
//where childLayoutid is a layout resourse id of childern layout
// where Target layout is a scrollview in my fragment
LayoutInflater inflater = LayoutInflater.from(getActivity());
View inflatedLayout1 = inflater.inflate(childLayoutid, null, false);
inflatedLayout1.setId(numOfChildAdded);// numOfChildAdded is int number of children added by user so far
Targetlayout.addView(inflatedLayout1, 0);
numOfAddedChildLayout.add(inflatedLayout1);//this is an array list i am creating to keep track of each layout added by user on add button click
return inflatedLayout1;
}
在布局中添加它之后,我调用了另一个方法来查找此布局的 id 并设置每个视图的点击侦听器,即微调器或编辑文本或任何需要的东西。现在假设用户添加了一个孩子。并单击获取子类别并填充 spinnerSubCatogry 的 spinnerAllergy 类型,再次单击 Web 服务时将调用 spinnerSubcategory 并获取过敏详细信息并填写 Textview(如图所示的大框)
现在主要问题出现在用户添加 2 号子项时。现在假设用户添加了 2 个子项,但他单击了 Child1 的 spinnerAllergy,child1 微调器运行 Web 服务但填充了 Child2 的微调器子类别。
看起来当添加新的孩子时,点击监听器是指新添加的新布局。
所以这是主要问题。我希望每个布局中的每个视图在其视图和边界中相应地工作。我的意思是 child1 布局视图单击侦听器应该填充其视图而不是当前添加的布局视图。
我认为这些信息足以让您获得一些清晰的想法。
请帮帮我,我在这里卡了 2 天。我的所有设计都运行良好。
【问题讨论】:
-
把你的代码放在这里
-
您可以设置一个监听器,当用户在通货膨胀时按下 EditText 以设置参考并在调用您的服务时使用该参考。
-
@yarakyo 你在说什么请演示
-
@VishalPatoliya 代码思路添加
标签: android android-layout layout