3 回答

TA貢獻1877條經(jīng)驗 獲得超1個贊
這樣做的原因是您沒有將 Double 轉(zhuǎn)換為 String 將此行更改holder.rating.setText(rRatings.get(position));
為holder.rating.setText(String.valueOf(rRatings.get(position)));

TA貢獻1841條經(jīng)驗 獲得超3個贊
首先,您應(yīng)該檢查您獲得的評級是否為雙倍值??赡苁窃谶@一行之后拋出異常
mRating.add(resultsObj.getDouble("rating"))
同樣,@hooray_todd siggested textview 只采用字符串值,因此您必須將數(shù)據(jù)更改為字符串。

TA貢獻2012條經(jīng)驗 獲得超12個贊
我建議您創(chuàng)建一個包含所有必要參數(shù)的對象,然后將該對象的單個列表傳遞給RecyclerViewAdapter.
public class MapElement {
public String name;
public String imageUrl;
public Double rating;
public Integer price;
}
然后ArrayList在您從getJson函數(shù)調(diào)用中獲得響應(yīng)時創(chuàng)建此對象的一個?,F(xiàn)在在您的適配器中只需使用單個MapElement對象列表來顯示那里的數(shù)據(jù)。
修改后的適配器應(yīng)如下所示。
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
private static final String TAG = "RecyclerViewAdapter";
private ArrayList<MapElement> elements = new ArrayList<>();
private Context mContext;
public RecyclerViewAdapter(ArrayList<MapElement> elements, Context context) {
this.elements = elements;
mContext = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
Glide.with(mContext).asBitmap().load(rImageUrls.get(position)).into(holder.image);
holder.name.setText(elements.get(position).name);
holder.rating.setText(elements.get(position).rating);
holder.priceLevel.setText(elements.get(position).price);
holder.parentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked on an image: " + rNames.get(position));
Toast.makeText(mContext, elements.get(position).name, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return elements.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
ImageView image;
TextView name;
TextView rating;
TextView priceLevel;
TextView address;
RelativeLayout parentLayout;
public ViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
name = (TextView) itemView.findViewById(R.id.title);
rating = itemView.findViewById(R.id.rating);
priceLevel = (TextView) itemView.findViewById(R.id.priceLevel);
parentLayout = itemView.findViewById(R.id.parentLayout);
}
}
}
添加回答
舉報