Android 添加&;使用ArrayAdapter从LinearLayout中删除项
我正在对所选联系人进行气泡显示。每个电话泡都是一个线性布局,其中包含ImageView和TextView。然后,这些气泡将显示在另一个LinearLayout中,它是HorizontalScrollView的子级 它的子/父树如下所示:Android 添加&;使用ArrayAdapter从LinearLayout中删除项,android,android-layout,android-arrayadapter,Android,Android Layout,Android Arrayadapter,我正在对所选联系人进行气泡显示。每个电话泡都是一个线性布局,其中包含ImageView和TextView。然后,这些气泡将显示在另一个LinearLayout中,它是HorizontalScrollView的子级 它的子/父树如下所示: - HorizontalScrollView |- LinearLayout (id="@+id/telField") |- LinearLayout (id="@+id/telBox") <- is programmatically added
- HorizontalScrollView
|- LinearLayout (id="@+id/telField")
|- LinearLayout (id="@+id/telBox") <- is programmatically added to parent
|- TextView (id="@+id/telNumber")
|- ImageView (id="@+id/delNumber")
我面临的问题是:
在我点击id为“telNumber”的LinearLayout后,它会一个接一个地删除每个气泡(无论我点击了哪个),直到它到达第一个添加的气泡。当到达第一个添加的元素时,它也会50/50崩溃,我还没有找到依赖项。它返回的错误是“越界错误”,因此我认为它与ik-1
行有关
我的问题是:如何更好地构造ArrayAdapter?在for循环中,编写以下代码行:
for (ik = 0; ik < adapterCount; ik++) {
final View item = telList.getView(ik, null, null);
item.setTag(ik);
telField.addView(item);
item.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int index = Integer.parseInt(v.getTag().toString());
telNumList.remove(index);
refresh();
}
});
}
for(ik=0;ik
希望它能帮助您解决问题。在for循环中,编写以下代码行:
for (ik = 0; ik < adapterCount; ik++) {
final View item = telList.getView(ik, null, null);
item.setTag(ik);
telField.addView(item);
item.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int index = Integer.parseInt(v.getTag().toString());
telNumList.remove(index);
refresh();
}
});
}
for(ik=0;ik
希望它能对您有所帮助。在您的代码中,您试图通过
ik
删除视图,该视图正在不断更改,因为您的编码正在删除上一个视图。我已修改了您的代码,如下所示
for (ik = 0; ik < adapterCount; ik++) {
final int position=ik;
final View item = telList.getView(ik, null, null);
telField.addView(item);
item.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
telField.removeView(item);
telNumList.remove(position);
telList.notifyDataSetChanged();
//refresh();
createAdapter();
}
});
}
for(ik=0;ik
此处的
position
将帮助您删除要删除的特定视图。我希望这就是您所要求的。在您的代码中,您试图通过ik
删除视图,该视图正在不断更改,因为您的编码正在删除上一个视图。我已修改了您的代码,如下所示
for (ik = 0; ik < adapterCount; ik++) {
final int position=ik;
final View item = telList.getView(ik, null, null);
telField.addView(item);
item.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
telField.removeView(item);
telNumList.remove(position);
telList.notifyDataSetChanged();
//refresh();
createAdapter();
}
});
}
for(ik=0;ik
此处的
position
将帮助您删除要删除的特定视图。我希望这就是您所要求的。我认为,与线性布局相比,水平循环视图将是更好的选择,因为添加-删除将更容易。您在预览中显示的视图完全可以通过tokenAutoComplete库实现:。祝你好运在我看来,与线性布局相比,水平循环视图将是更好的选择,因为添加-删除将更容易。您在预览中显示的视图完全可以通过tokenAutoComplete lib实现:。祝你好运您的解决方案有效,谢谢!我非常感谢你的帮助!不幸的是,拉胡尔·夏尔马跑得更快:)这不是问题。谢谢你的支持投票。我希望这将有助于其他人谁会发现它更容易。你的解决方案工程,谢谢!我非常感谢你的帮助!不幸的是,拉胡尔·夏尔马跑得更快:)这不是问题。谢谢你的支持投票。我希望这将有助于其他人谁会发现它更容易。