Java 使用接口从异步任务onpostexecute获取数据
您好,我正在尝试从异步任务类到另一个主类获取数据的arraylist: 我一直在遵循下面的答案,但我有点不知所措: 因此,我的类扩展了异步任务并调用数据库以获取对象数组:Java 使用接口从异步任务onpostexecute获取数据,java,android,interface,android-asynctask,Java,Android,Interface,Android Asynctask,您好,我正在尝试从异步任务类到另一个主类获取数据的arraylist: 我一直在遵循下面的答案,但我有点不知所措: 因此,我的类扩展了异步任务并调用数据库以获取对象数组: public class GetVideoInfoFromDataBase extends AsyncTask { // Paginated list of results for song database scan static PaginatedScanList<AlarmDynamoMappi
public class GetVideoInfoFromDataBase extends AsyncTask {
// Paginated list of results for song database scan
static PaginatedScanList<AlarmDynamoMappingAdapter> results;
// The DynamoDB object mapper for accessing DynamoDB.
private final DynamoDBMapper mapper;
public interface AlarmsDataBaseAsyncResponse {
void processFinish(PaginatedScanList<AlarmDynamoMappingAdapter> output);
}
public AlarmsDataBaseAsyncResponse delegate = null;
public GetVideoInfoFromDataBase(AlarmsDataBaseAsyncResponse delegate){
mapper = AWSMobileClient.defaultMobileClient().getDynamoDBMapper();
this.delegate = delegate;
}
@Override
protected Object doInBackground(Object[] params) {
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
results = mapper.scan(AlarmDynamoMappingAdapter.class, scanExpression);
return results;
}
@Override
public void onPostExecute(Object obj) {
delegate.processFinish(results);
}
}
它想让我这样投:
(GetVideoInfoFromDataBase) new GetVideoInfoFromDataBase(new GetVideoInfoFromDataBase.AlarmsDataBaseAsyncResponse()
这似乎不对,但我想我会检查一下
提前感谢您的帮助修改类的构造函数。 需要默认构造函数。顺便说一下,创建方法来设置接口
public void setInterface(AlarmsDataBaseAsyncResponse delegate){
this.delegate = delegate;}
在MainActivity中,将逻辑推入:
object.setInterface(new AlarmsDataBaseAsyncResponse(){
@Override
public void processFinish(PaginatedScanList<AlarmDynamoMappingAdapter> output) {
//your logic
}
});
object.setInterface(新的AlarmsDataBaseAsyncResponse(){
@凌驾
public void processFinish(PaginatedScanList输出){
//你的逻辑
}
});
首先创建一个接口
public interface AsyncInterface {
void response(String response);
}
在asynctask类中分配它,如下所示:-
Context context;
Private AsyncInterface asyncInterface;
AsyncClassConstructor(Context context){
this.context = context;
this.asyncInterface = (AsyncInterface) context;
}
然后在asynctask类的onPostExecute方法中:-
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
asyncInterface.response(s);
}
然后在活动中实现此接口:-
class MainActivity extends AppCompatActivity implements AsyncInterface {
然后导入异步接口的方法
@Override
public void response(String response) {
//Here you get your response
Log.e(TAG, response);
}
访问这个@skadoosh,它不包括任何关于接口的内容?它是关于AsyncTask的参数的,因为您当前的实现在参数方面是不正确的。我不理解您的解决方案。在我的代码中,第一部分似乎是alreeady。您错过了默认构造函数的子类中的方法super,所以最后一部分重写响应调用异步类?我不确定它是如何运行的?在完成后台任务后,AsyncTask类一旦返回到PostExecute方法,它将使用interfaceOk将结果数据发送到mainactivity,但如何调用async类?调用新的AsyncClass(context,?)时,它要求将上下文和AsyncInterface作为参数。很抱歉,我错误地在其中添加了AsyncInterface。您应该只将其中的上下文作为新的AsyncClass(MainActivity.this)传递
class MainActivity extends AppCompatActivity implements AsyncInterface {
@Override
public void response(String response) {
//Here you get your response
Log.e(TAG, response);
}