Wie bereits beim Milliarden Dollar Fehler beschrieben erleichtert uns eine aktuellere Java Version die Android - Programmierung wesentlich. Anbei ein Android REST Client Beispiel, das eine Liste von Todos vom json-placeholder herunterlädt und die Ergebnisse in einer ListView darstellt.

Den vollständigen Source Code finden Sie in den software-tutorials.

package ...;
import ...

public class MainActivity extends Activity {
    @Data
    static class ToDo {
        int id, userId;
        String title;
        boolean completed;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Observable
                .fromCallable(this::loadAllTodos)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(this::fillListViewWithTitlesOf);
    }
    @SneakyThrows
    ToDo[] loadAllTodos() {
        val url = new URL("https://jsonplaceholder.typicode.com/todos");
        return new ObjectMapper().readValue(url, ToDo[].class);
    }
    void fillListViewWithTitlesOf(ToDo[] todos) {
        val titlesOfTodos = Arrays.stream(todos)
                .map(ToDo::getTitle)
                .collect(Collectors.toList());
        ListView listView = findViewById(R.id.listView);
        listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, titlesOfTodos));
    }
}

Die Datei build.gradle muss noch entsprechend angepasst werden, um Java 8 zu verwenden. Hier wird compileOptions verwendet, um einen aktuelleren Java - Compiler zu verwenden. Weiters verwenden wir Lombok um auch mit der veralteten Java 8 Version etwas compakteren Code verwenden zu können.

android {
//...
    compileOptions {
        sourceCompatibility(JavaVersion.VERSION_1_8)
        targetCompatibility(JavaVersion.VERSION_1_8)
    }

//...
}
dependencies {
//... hier ihre üblichen dependencies und dann...
    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.3'
    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.16'
    annotationProcessor 'org.projectlombok:lombok:1.18.16'
}