gpt4 book ai didi

Android RecyclerView 不更新 TextView

转载 作者:行者123 更新时间:2023-11-29 19:45:57 25 4
gpt4 key购买 nike

我想在回收器 View 中更改异步数据。

当调用方法 SetText() 时,滚动之前什么也不会发生。

class MainAdapter extends RecyclerView.Adapter<MainAdapter.MyViewHolder> {
private Context context;
private SortedList<City> items;

public MainAdapter(Context context) {
this.context = context;
}

public void add(City item){
items.add(item);
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View row = LayoutInflater.from(context).inflate(R.layout.row, parent, false);
return new MyViewHolder(row);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.tvTitle.setText(String.format("%d %s", items.get(position).getId(), items.get(position).getName()));

Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
try {
//Do somethin in Background
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
subscriber.onNext(items.get(position).name);
subscriber.onCompleted();
}
}).subscribeOn(Schedulers.computation());

observable.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}

@Override
public void onError(Throwable e) {
}

@Override
public void onNext(String text) {
holder.tvRowText.setText(text);
}
});
}

@Override
public int getItemCount() {
return items.size();
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}

static class MyViewHolder extends RecyclerView.ViewHolder {

@BindView(R.id.row_title)
public TextView tvTitle;

@BindView(R.id.row_text)
public TextView tvRowText;

MyViewHolder(View row) {
super(row);
ButterKnife.bind(this, row);
}
}
}

我做错了什么?

onNext() 中调用 notifyDatachanged(i) 无效。

最佳答案

尝试使用下面的代码:

holder.tvRowText.setText(text);

在 post 调用中(它将在 UI 线程 上运行),如下所示:

holder.tvRowText.post(new runnable... emitted for brevity){
holder.tvRowText.setText(text);
}

关于Android RecyclerView 不更新 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37713834/

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