[解決済み] アダプタからActivityメソッドを呼び出す
2022-07-21 23:53:32
質問
で定義されたメソッドを呼び出すことは可能でしょうか?
Activity
から
ListAdapter
?
(を作りたい)。
Button
で
list's
の行で、このボタンがクリックされると、対応するアクティビティに定義されているメソッドを実行する必要があります。私は
onClickListener
を私の
ListAdapter
というメソッドがありますが、このメソッドをどのように呼び出すのか、そのパスは何なのかがわかりません...)
を使用したとき、私は
Activity.this.method()
というエラーが出ます。
No enclosing instance of the type Activity is accessible in scope
何か思いつくことはありますか?
どのように解決するのですか?
はい、できます。
アダプタの中で 新しいフィールドを追加します :
private Context mContext;
アダプタのコンストラクタに、次のコードを追加します。
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
AdapterのgetView(...)で。
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
コードやアクティビティなどを表示するクラス名を自分のものに置き換えます。
この同じアダプタを複数のアクティビティに使用する必要がある場合は、 :
インターフェイスを作成する
public interface IMethodCaller {
void yourDesiredMethod();
}
このメソッド呼び出し機能を必要とするアクティビティに、このインタフェースを実装します。
そして、Adapter getView()の中で、次のように呼び出します。
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
これで完了です。この呼び出し機構を必要としないアクティビティにこのアダプタを使用する必要がある場合、コードは実行されません(チェックに失敗した場合)。
関連
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] アクティビティで本来追加されるウィンドウが流出した
-
[解決済み] Androidで遅延後にメソッドを呼び出す方法
-
[解決済み] フラグメントからアクティビティメソッドを呼び出す
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] エラー Android Studioで名前'default'を持つ構成が見つかりません。
-
[解決済み] フラグメントからツールバーを取得する方法
-
[解決済み] EclipseでADTを更新するにはどうしたらいいですか?