Android ArrayAdapterからstartActivityする方法

AndroidのListViewでは独自のAdapterを作ってListViewにセットすることができます。
今回、独自のAdapterを作ってその中からあるアイコンをタップした時に別画面へ遷移させる方法がわからなかったので調べてみました。


ArrayAdapter内でstartActivityができないのはstartActivityがContextクラスのメソッドだかららしいです。
調べてみたら方法が載っていました。

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // アイコン
        SmartImageView icon = (SmartImageView) convertView.findViewById(R.id.icon);
        icon.setImageUrl(item.getUser().getProfileImageURL());
        // アイコンをタップするとリプライできるように
        icon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent replyToOther = new Intent(getContext(), TweetActivity.class);
                replyToOther.putExtra("jp.sub.takelab.twitmorus.replyToOther", item.getUser().getScreenName().toString());
                v.getContext().startActivity(replyToOther);
            }
        });
     return convertView;
     }
     v.getContext().startActivity(replyToOther);

Viewからcontextを取得してそこからstartActivityできるそうです。
この方法でTwitMorseもAdapterを共通化しています。

ダウンロードよろしくおねがいします!
TwitMorse 〜モールス信号でつぶやこう〜
btn_googleplay_01

参考:ListView の ArrayAdapter 内で定義したボタンから startActivity(intent); を実行したい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です