我致力于通过一些 REST API 实现自动完成建议(它实际上是 Nokia Here Geocoder Autocomplete API,但它并不那么重要)。我为AutoCompleteTextView.
public class GeoAutocompleteAdapter extends BaseAdapter implements Filterable {
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected Filter.FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
// obtain some autocomplete data
filterResults.values = res;
filterResults.count = res.size();
return filterResults;
}
//...
}
//...
}
Run Code Online (Sandbox Code Playgroud)
据我了解,部分"obtain some autocomplete data"在线程池中运行。如果我以同步方式获得自动完成的结果 - 它的工作。例如,我可以使用HttpURLConnection和InputStream- 所有同步阻塞调用在这里工作得很好。
但是如果我需要在这里调用一些以异步方式运行的 API,比如通过 Callback\Listener 呢?
我怎样才能在 performFiltering 中调用这样的东西?
request.execute( …Run Code Online (Sandbox Code Playgroud) 我有2个独立的Android应用程序(apk)。
应用1 SurfaceView在其中创建,并应为其他应用提供AIDL方法,以获取SurfaceHolderfor 的实例SurfaceView。因此,其他应用程序将能够在该视图中绘制,该视图显示在应用程序编号1中。
Surface由于它实现了Parcelable接口,因此我可以轻松地通过aidl 进行自身传输。
// IMainService.aidl
package com.commonsware.cwac.preso.demo.service;
import android.view.Surface;
interface IMainService {
Surface getSurf();
}
Run Code Online (Sandbox Code Playgroud)
但是第三方SDK需要SurfaceHolder使用。所以问题是-我如何SurfaceHolder为给定Surface实例创建,或者如何SurfaceHolder通过AIDL进行传输。有什么例子可以实现Parcelable SurfaceHolder吗?
我的用例(如果有的话):应用程序1作为a启动,Service并在Presentation Screen上绘制UI。而且,我需要一种方法来让另一个应用程序通过应用程序1内的Nokia Here Mobile SDK显示导航数据。我需要SurfaceHolder使用此 api。
任何帮助将不胜感激。
我正在尝试在 kotlin 中创建一个通用工厂,用于将某些字符串解析为模型类:
internal interface Model
data class UserId(val id: String, val name: String, val link: String): Model
data class Shelf(val id: String, val name: String, val bookCount: Int): Model
internal inline fun <reified T: Model> getParser(): Parser<T> {
return when (T::class) {
UserId::class -> UserIdParser() as Parser<T>
Shelf::class -> UserShelvesParser() as Parser<T>
else -> throw Exception("can't match proper parser")
}
}
internal interface Parser<out T: Model> {
fun parse(xml: String): T
}
internal class UserIdParser : Parser<UserId> {
override …Run Code Online (Sandbox Code Playgroud)