看板 AndroidDev 關於我們 聯絡資訊
是想要這樣 但是 MainActivity 已經extends .... java不能多重繼承 .... 想說用interface 在adapter.java 加上 public interface DataChange { public void callFunction(); } 並在Activity實做 @Override public void callFunction() { } 那在adapter.java @Override public void onBindViewHolder(@NonNull MyCartAdapter.ViewHolder holder, int position) { holder.xxx.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { 這裡要如何呼叫interface中的callFunction??? } }); } }); } ※ 引述《lazior (懶人)》之銘言: : 你的意思應該是recyclerView裡面的item做了某事後,會改變Activity裡的某元件吧? : 一開始還以為你是要去偵測recyclerView的狀態偵測(滾動中、閒置...) : 我不知道這樣的寫法好不好,但你參考看看 : 作法是在Adapter定義一個function,並在onBindViewHolder的地方呼叫這個functoin : 之後在Activity new這個Adapter時,複寫這個function : SomeAdapter: : @Override : public void onBindViewHolder(@NonNull MyCartAdapter.ViewHolder holder, : int position) { : holder.xxx.setOnClickListener(new View.OnClickListener() { : @Override : public void onClick(View v) { : clickFunction(); : } : }); : } : public void clickFunction() {} : MainActivity: : public class MainActivity extends ... { : private TextView textView; : @Override : protected void onCreate(Bundle savedInstanceState) { : ... : SomeAdapter adapter = new Adapter(...) { : // 複寫SomeAdapter裡的clickFunction : @Override : public void clickFunction() { : // do something you want here : // 清空textView : textView.setText(""); : } : }; : } : } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.60.240 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1626934246.A.F66.html ※ 編輯: lihohsin (114.34.60.240 臺灣), 07/22/2021 14:44:21
now99: new Adapter()帶進去 07/22 19:27
lazior: 這樣的話nash大的方法比較合乎你的意思 07/22 19:35
aiweisen: 在activity中設一個callback object去實現你的interfac 07/22 22:39
aiweisen: e,然後在new adapter的時候設把callback object丟進去 07/22 22:39
aiweisen: adapter裡面當全域變數,最後就是adapter中的item clic 07/22 22:39
aiweisen: k觸發時,透過傳入的callback object回call 你的interf 07/22 22:39
aiweisen: ace 07/22 22:39
brandonron: 除非你要自定義參數的interface,不然就跟二樓說的一 07/24 01:16
brandonron: 樣。另外,是我就不會在activity把interface 用成全 07/24 01:16
brandonron: 域方式實作,而是在adapter 中設置setter方式像參數 07/24 01:16
brandonron: 方法,在使用者使用這個setter function在實作需要的 07/24 01:16
brandonron: 參數,畢竟這功能是非必要性。 07/24 01:16
taco2548: 原po應該是沒理解new的時候可以直接複寫而已 07/26 04:08
taco2548: 我覺得兩個方法都很好,端看原po自己的需求 07/26 04:08