It is necessary in ListView , in each item to display a different number of View-elements (for this ListView, in each item there is a different number of songs).
The option to create it programmatically in a loop, I would like to know about the correct implementation.
I do this:
public View getView(final int position, View convertView, ViewGroup viewGroup) { ViewHolder viewHolder; if (convertView == null){ LayoutInflater inflater = (LayoutInflater)ctx .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.internetlist, viewGroup, false); viewHolder = new ViewHolder(); viewHolder.txtItem = (TextView) convertView.findViewById(R.id.internetlistText); viewHolder.image = (ImageView)convertView.findViewById(R.id.internetlistImageView1); viewHolder.layot = (LinearLayout)convertView.findViewById(R.id.internetlistLinearLayout1); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } //viewHolder.txtItem.setText(objects.get(position).getItems().get(0).getUrl()); if (viewHolder.image!=null){ //new DownloadImageTask(viewHolder.image).execute(objects.get(position).getItems().get(0).getUrl()); viewHolder.txtItem.setText(objects.get(position).getItems().get(1).getArtist()); ImageLoader.getInstance().displayImage(objects.get(position).getItems().get(0).getUrl(),viewHolder.image,options); for (int i =1;i<objects.get(position).getItems().size();i++){ Button b = new Button(ctx); b.setBackgroundResource(R.color.ffffff); b.setTextSize(15); b.setText(objects.get(position).getItems().get(i).getArtist() + " " +objects.get(position).getItems().get(i).getTitle()); viewHolder.layot.addView(b); } } return convertView; Buttons are created, filled in correctly, only when scrolling there are extra lists (for example, in the first item is the first list of songs and in the same place the third or fifth one and so on everywhere). Maybe this is due to the re-creation of the item ?
And one more question. Can my dynamically created buttons be stored in Holder ?