ListView(adapter使用)の内容を一部更新したい

5,742 views
Skip to first unread message

Raiquo

unread,
Jun 28, 2011, 3:35:38 AM6/28/11
to 日本Androidの会
ListView(adapter使用)の内容を一部更新する場合どのようにしたらよいのでしょうか?

例えば、
----------------
あいうえお
かきくけこ
さしすせそ
たちつてと
----------------

と、4行リストが表示されているとして、
"さしすせそ"を"なにぬねの"にしたい場合
どのようにするとよいのでしょうか?
adapterをNewしなおすと、リスト表示位置が最初に戻るため
やりたくないのと、adapter.clear()してadapter.add()を行っても
最初に戻ってしまうため、どうしていいのか
わかりません。

方法が判る方がございましたら、レクチャーのほど
よろしくお願いいたします。

Masaki Otsuki

unread,
Jun 28, 2011, 7:15:48 PM6/28/11
to android-g...@googlegroups.com
大槻と申します。

外しているかも知れませんが、adapterにArrayAdapterを使用し、removeとinsertを
使えば出来るのではないでしょうか。

よろしくお願いします。

2011年6月28日16:35 Raiquo <alter...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

fuku

unread,
Jun 28, 2011, 11:01:52 PM6/28/11
to 日本Androidの会
福吉です。

変更した後に
adapter.notifyDataSetChanged();
を使用すれば位置は変更されないと思います。

yuka2py

unread,
Jun 29, 2011, 8:12:30 AM6/29/11
to android-g...@googlegroups.com

ゆぅかです。こんばんわ。

テキスト自体は、TextView で表示されていると思いますので、
その TextView に直接 setText したら表示はかわります。

自前で Adapter の getView を書いていたら割と簡単です。
ListView の各行が、getView の中で再利用されることに注意してください。

ちょうど今日会社で同じ質問に答えました。
で、その時は思いつきで、
行に対応するデータホルダに細工して、getView の時に後で変更する予定の TextView を渡し、
データホルダの setter の中で TextView を持っていたら setText するようにしてはどうかと答えました。

この方法では View の再利用対策が必要になりますが、そこは考えてみてください。
この場合、ひとつの TextView が複数のデータホルダに保持されなくする工夫です(たぶん)。

ちなみに、
SimpleArrayAdapter (でしたっけ?) とか利用されてたら出来るのかしら?
やったこと無いですが、たぶん何かしたら出来そうです…。

中途半端ですみません。
でわー。

-- ゆぅか。

2011/06/28 16:36 "Raiquo" <alter...@gmail.com>:

yuka2py

unread,
Jun 29, 2011, 8:17:24 AM6/29/11
to android-g...@googlegroups.com

ゆぅかです。

> 福吉です。
>
> 変更した後に
> adapter.notifyDataSetChanged();
> を使用すれば位置は変更されないと思います。

あ。そうか、そうでしたね。

会社で聞かれた時は、そういえば notifyDataSetChanged が使えないという場面でしたです。。

すみませんですー。

-- ゅぅか。

>
> On 6月28日, 午後4:35, Raiquo <alterf....@gmail.com> wrote:
> > ListView(adapter使用)の内容を一部更新する場合どのようにしたらよいのでしょうか?
> >
> > 例えば、
> > ----------------
> > あいうえお
> > かきくけこ
> > さしすせそ
> > たちつてと
> > ----------------
> >
> > と、4行リストが表示されているとして、
> > "さしすせそ"を"なにぬねの"にしたい場合
> > どのようにするとよいのでしょうか?
> > adapterをNewしなおすと、リスト表示位置が最初に戻るため
> > やりたくないのと、adapter.clear()してadapter.add()を行っても
> > 最初に戻ってしまうため、どうしていいのか
> > わかりません。
> >
> > 方法が判る方がございましたら、レクチャーのほど
> > よろしくお願いいたします。
>

Reply all
Reply to author
Forward
0 new messages