ListViewの任意の行で、動的にviewを追加したい。

896 views
Skip to first unread message

freest55

unread,
Apr 7, 2014, 12:43:20 PM4/7/14
to android-g...@googlegroups.com

ArrayAdapterを継承したクラスで、ListViewを表示しています。

その行のテキスト要素に画像URLがあれば、

その画像の数だけ、行にImageViewを追加し、サムネイル表示の様にしたいのですが、

以下のコードの様にすると、画像要素の無い行にもどこかのサムネイルが出たり、繰り返し表示をしたりしてしまいます。

viewを再利用しているからかな?と思いましたが、解決方法が分かりません。


任意の行だけにサムネイルを表示させるにはどうしたら良いでしょうか?

宜しくお願いします!


public class TestAdapter extends ArrayAdapter<Item> {

~~~

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = layoutInflater_.inflate(R.layout.list_row, null);

}

final Item item = this.getItem(position);

LinearLayout ll = (LinearLayout) convertView

.findViewById(R.id.list_rowLL);//親のview

tvBody = (TextView) convertView.findViewById(R.id.tvBody);

tvBody.setText(item.getFldBody());//テキスト表示の為のview

//画像があれば、画像数分ImageViewを追加

if (item.getImgAry() != null) {

for (int i = 0; i < item.getImgAry().size(); i++) {

ImageView img = new ImageView(_con);

img.setBackgroundDrawable(item.getImgAry().get(i));

img.setLayoutParams(new ViewGroup.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,

ViewGroup.LayoutParams.WRAP_CONTENT));

ll.addView(img);

}

}


return convertView;

}

}


//Itemクラス

public class Item {

private String fldBody;

private ArrayList<Drawable> imgAry;//fldBody内に画像URLがあれば、画像を取得してきてこの配列に入れている。


public Item() {

setFldBody("");

setImgAry(null);

}


public String getFldBody() {

return fldBody;

}


public void setFldBody(String fldBody) {

this.fldBody = fldBody;

}


public ArrayList<Drawable> getImgAry() {

return imgAry;

}


public void setImgAry(ArrayList<Drawable> imgAry) {

this.imgAry = imgAry;

}


}




Hirokazu Fukami

unread,
Apr 7, 2014, 12:54:29 PM4/7/14
to android-g...@googlegroups.com
こんばんはfkmです。

Viewは再利用されるので、
if (item.getImgAry() != null)
の直前に、以前追加したImageViewを削除するコードをいれないとだめですね
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-j...@googlegroups.com にメールを送信してください。
> このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

freest55

unread,
Apr 8, 2014, 12:27:29 AM4/8/14
to android-g...@googlegroups.com
fkmさん

fkmさんの仰る通りにやって、お陰様で想定通りに出来ました!

ありがとうございました!!!


2014年4月8日火曜日 1時54分29秒 UTC+9 fkm:
> android-group-japan+unsub...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages