diff --git a/src/api-impl-jni/generated_headers/android_widget_AbsListView.h b/src/api-impl-jni/generated_headers/android_widget_AbsListView.h
index 77605b81..6ab8447d 100644
--- a/src/api-impl-jni/generated_headers/android_widget_AbsListView.h
+++ b/src/api-impl-jni/generated_headers/android_widget_AbsListView.h
@@ -223,14 +223,6 @@ JNIEXPORT void JNICALL Java_android_widget_AbsListView_setAdapter
JNIEXPORT void JNICALL Java_android_widget_AbsListView_setItemChecked
(JNIEnv *, jobject, jint, jboolean);
-/*
- * Class: android_widget_AbsListView
- * Method: setOnItemSelectedListener
- * Signature: (Landroid/widget/AdapterView/OnItemSelectedListener;)V
- */
-JNIEXPORT void JNICALL Java_android_widget_AbsListView_setOnItemSelectedListener
- (JNIEnv *, jobject, jobject);
-
/*
* Class: android_widget_AbsListView
* Method: setOnItemClickListener
diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java
index edd23428..11dc47de 100644
--- a/src/api-impl/android/app/Activity.java
+++ b/src/api-impl/android/app/Activity.java
@@ -398,6 +398,12 @@ public class Activity extends ContextWrapper implements Window.Callback {
return null;
}
+ @Override
+ public boolean onMenuOpened(int featureId, Menu menu) {
+ System.out.println("onMenuOpened(" + featureId + ", " + menu + ") called");
+ return false;
+ }
+
private native void nativeFinish(long native_window);
public static native void nativeStartActivity(Activity activity);
public static native void nativeOpenURI(String uri);
diff --git a/src/api-impl/android/app/Dialog.java b/src/api-impl/android/app/Dialog.java
index 67a60a9a..f665a55b 100644
--- a/src/api-impl/android/app/Dialog.java
+++ b/src/api-impl/android/app/Dialog.java
@@ -123,6 +123,12 @@ public class Dialog implements Window.Callback, DialogInterface {
throw new UnsupportedOperationException("Unimplemented method 'onPanelClosed'");
}
+ @Override
+ public boolean onMenuOpened(int featureId, Menu menu) {
+ // TODO Auto-generated method stub
+ throw new UnsupportedOperationException("Unimplemented method 'onMenuOpened'");
+ }
+
protected void onCreate (Bundle savedInstanceState) {
System.out.println("- onCreate - Dialog!");
}
diff --git a/src/api-impl/android/media/session/MediaSession.java b/src/api-impl/android/media/session/MediaSession.java
index 201818bb..43fe90fa 100644
--- a/src/api-impl/android/media/session/MediaSession.java
+++ b/src/api-impl/android/media/session/MediaSession.java
@@ -28,6 +28,8 @@ public class MediaSession {
public void setCallback(Callback callback, Handler handler) {}
+ public void setCallback(Callback callback) {}
+
public void setMediaButtonReceiver(PendingIntent pendingIntent) {}
public void setActive(boolean active) {}
diff --git a/src/api-impl/android/net/Uri.java b/src/api-impl/android/net/Uri.java
index 39431459..98c06d4d 100644
--- a/src/api-impl/android/net/Uri.java
+++ b/src/api-impl/android/net/Uri.java
@@ -2,6 +2,8 @@ package android.net;
import java.net.URI;
import libcore.net.UriCodec;
+
+import java.io.File;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
@@ -160,4 +162,15 @@ public class Uri {
public String toString() {
return String.valueOf(uri);
}
+
+ public static Uri fromFile(File file) {
+ Uri ret = new Uri();
+ ret.uri = file.toURI();
+ return ret;
+ }
+
+ public String getLastPathSegment() {
+ String[] segments = uri.getPath().split("/");
+ return segments[segments.length - 1];
+ }
}
diff --git a/src/api-impl/android/os/RemoteCallbackList.java b/src/api-impl/android/os/RemoteCallbackList.java
index 65bc4c86..68b2bf33 100644
--- a/src/api-impl/android/os/RemoteCallbackList.java
+++ b/src/api-impl/android/os/RemoteCallbackList.java
@@ -7,4 +7,6 @@ public class RemoteCallbackList {
}
public void finishBroadcast() {}
+
+ public void kill() {}
}
diff --git a/src/api-impl/android/text/Html.java b/src/api-impl/android/text/Html.java
index e6f3c1f9..ccb4cd17 100644
--- a/src/api-impl/android/text/Html.java
+++ b/src/api-impl/android/text/Html.java
@@ -4,4 +4,19 @@ public class Html {
public static Spanned fromHtml(String source) {
return new SpannableString(source.replace("
", "\n")); // TODO when JTidy is in use: s/
//g
}
+
+ public static String escapeHtml(CharSequence source) {
+ StringBuilder out = new StringBuilder(source.length());
+ for (int i = 0; i < source.length(); i++) {
+ char c = source.charAt(i);
+ if (c == '<' || c == '>' || c == '&' || c == '"' || c == '\'' || c > 0x7F) {
+ out.append("");
+ out.append((int) c);
+ out.append(';');
+ } else {
+ out.append(c);
+ }
+ }
+ return out.toString();
+ }
}
diff --git a/src/api-impl/android/view/Display.java b/src/api-impl/android/view/Display.java
index c2613deb..e07a81f5 100644
--- a/src/api-impl/android/view/Display.java
+++ b/src/api-impl/android/view/Display.java
@@ -59,4 +59,8 @@ public final class Display {
public void getSize(Point size) {
size.set(getWidth(), getHeight());
}
+
+ public void getRealSize(Point size) {
+ getSize(size);
+ }
}
diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java
index 79705df7..cdda3633 100644
--- a/src/api-impl/android/view/View.java
+++ b/src/api-impl/android/view/View.java
@@ -1497,6 +1497,10 @@ public class View extends Object {
post(action);
}
+ public void postOnAnimationDelayed(Runnable action, long delayMillis) {
+ postDelayed(action, delayMillis);
+ }
+
public void setHorizontalScrollBarEnabled(boolean enabled) {}
public void postInvalidateOnAnimation() {
@@ -1613,4 +1617,10 @@ public class View extends Object {
public int getMeasuredWidthAndState() {
return measuredWidth;
}
+
+ public void forceLayout() {
+ requestLayout();
+ }
+
+ public void removeOnAttachStateChangeListener(OnAttachStateChangeListener listener) {}
}
diff --git a/src/api-impl/android/view/Window.java b/src/api-impl/android/view/Window.java
index 867b6ddb..91bf4cea 100644
--- a/src/api-impl/android/view/Window.java
+++ b/src/api-impl/android/view/Window.java
@@ -18,6 +18,8 @@ public class Window {
public boolean onMenuItemSelected(int featureId, MenuItem item);
public void onPanelClosed(int featureId, Menu menu);
+
+ public boolean onMenuOpened(int featureId, Menu menu);
}
// FIXME private
diff --git a/src/api-impl/android/view/inputmethod/InputMethodManager.java b/src/api-impl/android/view/inputmethod/InputMethodManager.java
index 79b81afc..30690810 100644
--- a/src/api-impl/android/view/inputmethod/InputMethodManager.java
+++ b/src/api-impl/android/view/inputmethod/InputMethodManager.java
@@ -1,9 +1,12 @@
package android.view.inputmethod;
import android.os.IBinder;
+import android.view.View;
public class InputMethodManager {
public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) {return false;}
+ public boolean showSoftInput(View view, int flags) {return false;}
+
}
diff --git a/src/api-impl/android/widget/AbsListView.java b/src/api-impl/android/widget/AbsListView.java
index c925d347..a05974b4 100644
--- a/src/api-impl/android/widget/AbsListView.java
+++ b/src/api-impl/android/widget/AbsListView.java
@@ -5,6 +5,8 @@ import android.util.AttributeSet;
public abstract class AbsListView extends AdapterView {
+ public boolean mIsChildViewEnabled = false; // this field gets directly accessed by androidx DropDownListView
+
public AbsListView(Context context) {
super(context);
}
@@ -24,14 +26,23 @@ public abstract class AbsListView extends AdapterView {
public native void setItemChecked(int position, boolean value);
- @Override
- public native void setOnItemSelectedListener(OnItemSelectedListener listener);
-
@Override
public native void setOnItemClickListener(OnItemClickListener listener);
public native int getCheckedItemPosition();
+ public void setCacheColorHint(int color) {}
+
+ public int getListPaddingTop() {return 0;}
+
+ public int getListPaddingBottom() {return 0;}
+
+ public int pointToPosition(int x, int y) {
+ return -1;
+ }
+
public interface OnScrollListener {}
+ public interface SelectionBoundsAdjuster {}
+
}
diff --git a/src/api-impl/android/widget/HeaderViewListAdapter.java b/src/api-impl/android/widget/HeaderViewListAdapter.java
new file mode 100644
index 00000000..4350e7d8
--- /dev/null
+++ b/src/api-impl/android/widget/HeaderViewListAdapter.java
@@ -0,0 +1,5 @@
+package android.widget;
+
+public class HeaderViewListAdapter {
+
+}
diff --git a/src/api-impl/android/widget/ListView.java b/src/api-impl/android/widget/ListView.java
index 4f5dcc45..14ff0c31 100644
--- a/src/api-impl/android/widget/ListView.java
+++ b/src/api-impl/android/widget/ListView.java
@@ -1,6 +1,7 @@
package android.widget;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
public class ListView extends AbsListView {
@@ -13,4 +14,8 @@ public class ListView extends AbsListView {
super(context, attributeSet);
}
+ public int getDividerHeight() {return 0;}
+
+ public Drawable getDivider() {return null;}
+
}
diff --git a/src/api-impl/android/widget/RadioButton.java b/src/api-impl/android/widget/RadioButton.java
index e5ce7db1..def37dce 100644
--- a/src/api-impl/android/widget/RadioButton.java
+++ b/src/api-impl/android/widget/RadioButton.java
@@ -2,9 +2,8 @@ package android.widget;
import android.content.Context;
import android.util.AttributeSet;
-import android.view.View;
-public class RadioButton extends View {
+public class RadioButton extends CompoundButton {
public RadioButton(Context context) {
super(context);
diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java
index 79526cc4..e25cfa6d 100644
--- a/src/api-impl/android/widget/TextView.java
+++ b/src/api-impl/android/widget/TextView.java
@@ -207,4 +207,6 @@ public class TextView extends View {
public int getCompoundPaddingLeft() {return 0;}
public int getCompoundPaddingRight() {return 0;}
+
+ public void setHint(int resId) {}
}
diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build
index 5249ce1c..be31059c 100644
--- a/src/api-impl/meson.build
+++ b/src/api-impl/meson.build
@@ -412,6 +412,7 @@ hax_jar = jar('hax', [
'android/widget/EditText.java',
'android/widget/Filter.java',
'android/widget/FrameLayout.java',
+ 'android/widget/HeaderViewListAdapter.java',
'android/widget/HorizontalScrollView.java',
'android/widget/ImageButton.java',
'android/widget/ImageView.java',