我有一个只包含一个通用方法的接口:
public interface Presenter {
<T> void query(T queryParameter);
}
Run Code Online (Sandbox Code Playgroud)
现在,我想定义 的子类,Presenter并且类型为String,就像这样:
public class IpQueryPresenter implements Presenter {
void query(String queryParameter) {
//do something here...
}
}
Run Code Online (Sandbox Code Playgroud)
如何定义呢?
我看到您所有的答案都定义了接口名称的类型,但这是必须的吗?如果我只想定义一个通用方法并覆盖它,是否可以?
我有一个项目,RecyclerView当我打电话时不需要更新notifyDataSetChanged。
但是我没有找到任何方法可以使指定的项目避免更新。是否有可能做到这一点 ?
我需要这样做,因为该项目是一个WebView,它已经加载了一个 html 页面,如果我调用notifyDataSetChanged,该项目将闪烁。
为什么我张贴这个问题的原因是避免的闪光灯WebView时notifyDataSetChanged(见这quesion)。在使用notifyItemRangeXXX方法失败后,我发布了这个问题。
但是看了大家的回答和评论后,好像在使用notifyDataSetChanged.
我有一个 Kotlin 类,它只声明了一些用于 Kotlin 和 C/C++ 交互的方法:
class JNILib {
companion object {
external fun getAppId(): String
init {
System.loadLibrary("native-code")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我在声明本机方法时遇到了问题。我试过
extern "C"
JNIEXPORT jstring JNICALL
Java_com_package_JNILib_getAppId(
JNIEnv *env, jobject /* this */){
// wrong
}
extern "C"
JNIEXPORT jstring JNICALL
Java_com_package_JNILib_Companion_getAppId(
JNIEnv *env, jobject /* this */){
// wrong
}
Run Code Online (Sandbox Code Playgroud) 我使用这种方式来获取ViewPager的当前View:
private class OuterAdapter extends PagerAdapter{
private SwipingVideoPage currentPage;
@Override
public Object instantiateItem(ViewGroup container, int position) {
SwipingVideoPage page = new SwipingVideoPage();
container.addView(page);
return page;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
currentPage = (SwipingVideoPage)object;
super.setPrimaryItem(container, position, object);
}
public SwipingVideoPage getCurrenPage() {
return currentPage;
}
}
Run Code Online (Sandbox Code Playgroud)
我想可以打电话ViewPager.getAdapter.getCurrentPage()得到当前的看法。但我发现它不适用于ViewPager.OnPageChangeListener.onPageSelected():
private class OuterChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageSelected(int position) { …Run Code Online (Sandbox Code Playgroud)