I have a listview where I have to added data dynamically to linearLayout , as its not nessasary each row has same amount of data.
For this I have dynamically added textView to Linear layout in LiveView Adapter.
Now on scrolling textview are countinued adding!!
Any ideas how to resolve this???
This is what I’m doing.
static class ViewHolder
{
TextView itemName , itemQuantity , itemTotalPrice , attrKey , attrValue;
CheckBox deleteCheckbox;
ImageButton nextArrow;
LinearLayout linearLayout , attrHolder;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if(convertView == null)
{
convertView = mLayoutInflator.inflate(R.layout.basket_list,null);
holder = new ViewHolder();
holder.itemName = (TextView) convertView.findViewById(R.id.basket_list_item_name);
holder.itemQuantity = (TextView) convertView.findViewById(R.id.basket_list_item_number);
holder.itemTotalPrice = (TextView) convertView.findViewById(R.id.basket_list_total_amount);
holder.nextArrow = (ImageButton) convertView.findViewById(R.id.basket_list_next_arraow);
holder.deleteCheckbox = (CheckBox) convertView.findViewById(R.id.basket_list_checkbox);
holder.linearLayout = (LinearLayout)convertView.findViewById(R.id.basket_list_atributes);
convertView.setTag(holder);
}else
holder = (ViewHolder) convertView.getTag();
attributes = items.get(position).getAttributeVOs();
holder.itemName.setText(items.get(position).getItemName());
holder.itemQuantity.setText("x"+items.get(position).getItemQuantity());
holder.itemTotalPrice.setText("R "+items.get(position).getItemTotalCost());
if(CheckListActivity.flag)
holder.deleteCheckbox.setVisibility(View.VISIBLE);
else
holder.deleteCheckbox.setVisibility(View.GONE);
holder.deleteCheckbox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
System.out.println("CHECKED");
if(cb.isChecked())
holder.deleteCheckbox.setButtonDrawable(R.drawable.checkarrow);
else
holder.deleteCheckbox.setButtonDrawable(R.drawable.unchecked);
checkedArray.put(position, cb.isChecked());
}
});
holder.nextArrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//To next activity
}
});
for(int i = 0 ; i < attributes.size() ; i ++)
{
LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
holder.attrHolder = new LinearLayout(context);
holder.attrHolder.setOrientation(LinearLayout.HORIZONTAL);
holder.attrHolder.setLayoutParams(lparams);
holder.attrKey = new TextView(context);
holder.attrKey.setLayoutParams(lparams);
holder.attrKey.setText(attributes.get(i).getKey());
holder.attrValue = new TextView(context);
holder.attrValue.setLayoutParams(lparams);
holder.attrValue.setText(attributes.get(i).getValues().toString());
holder.attrHolder.addView(holder.attrKey);
holder.attrHolder.addView(holder.attrValue);
}
holder.linearLayout.addView(holder.attrHolder);
return convertView;
}
Solved removed the if(convertView == null) { }else checking.