[英]method call from adapter class to activity
適配器:
check_list_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JPrequirements.prepareSelection(v, getAdapterPosition());
}
});
JPrequirements
是活動。 而prepareSelection
是活動內部的非靜態方法。 我無法從適配器訪問它。
錯誤:
非靜態方法不能從靜態上下文中引用
哪個是對的。 這就是為什么我嘗試使用:
JPrequirements().prepareSelection(v, getAdapterPosition()); // Creating an instance...
但是,問題是我在這里丟失了所有活動組件。 例如。 布局組件和其他支持變量。 我不要 處理此問題的最佳方法是什么? 如何從適配器到活動獲取更新值? 因此,我可以實時顯示它。
謝謝。
您可以通過interface
實現此目的。 首先,將interface
類定義為:
public interface ActivityAdapterInterface {
public void prepareSelection(View v, int position);
}
現在,在“ Activity
實現interface
為:
public class JPrequirements extends AppCompatActivity implements ActivityAdapterInterface {
...
public void prepareSelection(View v, int position) {
// cool stuff here
}
...
}
確保通過Adapter
的構造函數this
接口引用傳遞給Adapter
。 然后,最終通過點擊將其稱為:
check_list_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mActivityAdapterInterface.prepareSelection(v, getAdapterPosition());
}
});
[編輯]
要為您的Adapter
提供interface
,請為其提供構造函數。
public class YourAdapter ... {
private ActivityAdapterInterface mActivityAdapterInterface;
public YourAdapter(..., ActivityAdapterInterface activityAdapterInterface) {
activityAdapterInterface = mActivityAdapterInterface;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.