我有一个 RecylcerView,它从外部服务器加载数据。我的每个项目都有一个 TextView。我的问题是,当同时使用英语和波斯语文本时,我的一些 项目在 TextView 中没有相关值,并且在 TextView 中不显示任何内容。但是当只使用一种语言(英语或波斯语)时,它工作得很好。我所说的一种语言是指适配器中的所有数据都采用一种语言,而不仅仅是一个项目。 此外,我的适配器从外部服务器获取数据,因此我无法将我的文本存储在/res 文件夹中。此外,我的代码中的 getText() 始终显示正确的值。
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
if(viewHolder instanceof ItemViewHolder) {
final CategoryItem nature = mItems.get(i);
String itemName = mItems.get(i).getName();
//This line of code doesn't work for some items when both English and Arabic texts are used
((ItemViewHolder) viewHolder).dsc.setText(itemName);
//This line of code shows the correct values at all times
System.out.println("itemName " + ((ItemViewHolder) viewHolder).dsc.getText());
}else{
((ProgressViewHolder)viewHolder).progressBar.setIndeterminate(true);
}
}
如图所示,有些项目的 TextView 为空。这张图片的空项的三个值应该是:bb, سلام, bbسلام
最佳答案
多个查看器的简短示例。
可能在这之后你的代码会更清晰
public class yourAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class ItemViewHolder extends RecyclerView.ViewHolder {
...
}
class ProgressViewHolder extends RecyclerView.ViewHolder {
...
}
@Override
public int getItemViewType(int position) {
//here is the place where viewholder may choose
return position;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new ItemViewHolder(...);
case 1: return new ProgressViewHolder(...);
...
}
}
}
关于java - 我无法在 RecyclerView 中同时显示波斯语和英语文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32682146/