我有一个ExpandableListView,我正在使用适配器来扩展布局XML中的组和子行。在我的孩子XML中,我有3个文本视图:名称,注释和金额。我想要的是: 如果孩子的对象数量> 1在适当的文本视图中显示它;将注释文本视图的文本设置为子项的详细信息字段,但如果详细信息字符串为空 - 使视图消失。
所以我在我的适配器中有这个代码:
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final ChildHolder child_holder;
if(convertView == null)
{
convertView = LayoutInflater.from(context).inflate(R.layout.row_selected_item_packed, null);
child_holder = new ChildHolder();
child_holder.tv_si_name = (TextView) convertView.findViewById(R.id.tv_packed_item_name);
child_holder.tv_si_notes = (TextView) convertView.findViewById(R.id.tv_packed_item_notes);
child_holder.tv_si_amount = (TextView) convertView.findViewById(R.id.tv_packed_item_amount);
child_holder.img_packed = (ImageView) convertView.findViewById(R.id.img_packed);
convertView.setTag(child_holder);
} else {
child_holder = (ChildHolder) convertView.getTag();
}
final Selected_Group selected_group = arr_selected_groups.get(groupPosition);
final Selected_Item selected_item = selected_group.getArr_selected_items().get(childPosition);
if(selected_item!=null)
{
child_holder.tv_si_name.setText(selected_item.getItem_name());
//Here starts the problem
child_holder.tv_si_notes.setText(selected_item.getSelected_item_details());
if(selected_item.getSelected_item_details().equals(""))
{
child_holder.tv_si_notes.setVisibility(View.GONE);
}
if(selected_item.getSelected_item_amount()>1)
{
child_holder.tv_si_amount.setText(String.valueOf(selected_item.getSelected_item_amount()));
}
if(selected_item.isSelected_item_packed())
{
child_holder.img_packed.setImageDrawable(context.getResources().getDrawable(R.drawable.check_box_packed));
} else {
child_holder.img_packed.setImageDrawable(context.getResources().getDrawable(R.drawable.check_box_unchecked));
}
}
return convertView;
}
class ChildHolder{
TextView tv_si_name;
TextView tv_si_notes;
TextView tv_si_amount;
ImageView img_packed;
}
目前我只有1个孩子,其金额> 1(其余的都有1个)和详细信息。但这是发生的事情:
if
语句消失了 - 那么细节也会被复制到那个孩子。如果我打开另一个组 - 我也会看到其中一个孩子的金额。所以最终如果我继续打开和关闭小组,我将在每个孩子的金额文本视图中有金额。为什么会发生这种情况?如何解决?
答案 0 :(得分:0)
尝试这样..
child_holder.tv_si_notes.setVisibility(View.GONE);
if(selected_item.getSelected_item_details().equals(""))
{
child_holder.tv_si_notes.setVisibility(View.GONE);
}
else
{
child_holder.tv_si_notes.setVisibility(View.VISIBLE);
}