gpt4 book ai didi

java - 等待 onPostExecute 完成以制作新的适配器

转载 作者:行者123 更新时间:2023-11-29 04:06:25 24 4
gpt4 key购买 nike

我尝试使用 Tmdb api 查找一些电影,但我遇到了问题。

每次我在 EditText 上做一些事情时,我都需要执行一个 Asynctask,但任务时间更长。

这可以等到 fetchData 上的 onPostExecute 没有完成吗?

创建 AsyncTask 的 fetchData 类:

protected Void doInBackground(Void... voids) {
//make things...
}
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
SearchActivity.listFinale = list;
}

我的 SearchActivity 的一部分:

public static RecyclerView rv;
public static ArrayList<Movie> listFinale = new ArrayList<Movie>();

recherche.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

fetchData process = new fetchData(recherche.getText().toString());
process.execute();


//I want to do this part when onPostExecute is finish
rv.setLayoutManager(new LinearLayoutManager(SearchActivity.this));
MyAdapter mMyadapter= new MyAdapter(listFinale);
rv.setAdapter(mMyadapter);
mMyadapter.setonItmeClickListener(SearchActivity.this);
//

}

@Override
public void afterTextChanged(Editable s) {
}
});

最佳答案

我的建议是你可以学习retrofit, rxjava rxandroid (reactive programming) 库。这样,您就可以与接口(interface)进行通信。您可以创建一个接口(interface)并在 SearchActivity 中实现。

public interface IResultListener {
void onResult(List<BlaBlaModel> list);
}

然后,在 SearchActivity 中实现。

private IResultListener resultListener = new IResultListener() {
@Override
public void onResult(List<BlaBlaModel> list) {
// do anything...
}
};

然后我们把这个接口(interface)对象赋值给asynctask。当结果完成时,我们将列表发送到具有这样的接口(interface)对象的 SearchActivity。

protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if (listener != null) {
listener.onResult(list)
}
}

关于java - 等待 onPostExecute 完成以制作新的适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com