如何在回收视图中使用哈希图数据?



我用HashMap计算相同的值(说hasmap(,但是如何在RecyclerView中显示HashMap的键和值?

HashMap<String, Integer> hasmap = new HashMap<>();
for (int i = 0; i < data.length(); i++){
JSONObject List_data_kecamatan = data.getJSONObject(i);
String nama_kecamatan = List_data_kecamatan.getString("dapil_kecamatan");
int count = 0;
if (hasmap.containsKey(nama_kecamatan)){
count = hasmap.get(nama_kecamatan)+1;
hasmap.put(nama_kecamatan, count);
}else {
hasmap.put(nama_kecamatan, 1);
}
}

我使用 JSON 对象作为hasmap中的键。

这样想:

public class MyRVAdapter extends RecyclerView.Adapter<MyViewHolder> {
private HashMap<String, String> mData;
private ArrayList<Pair<String, String>> mActualData;
public MyRVAdapter(HashMap<String, String> mData) {
this.mData = mData;
mActualData = new ArrayList<>(mData.size());
mData.forEach((s, s2) -> mActualData.add(new Pair<>(s, s2)));
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
TextView v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_text_view, holder, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.mTextView.setText(
String.format("%s - %s", mActualData.get(position).first, mActualData.get(position).second)
);
}
@Override
public int getItemCount() {
return mActualData.size();
}
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView mTextView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
mTextView = (TextView)itemView;
}
}

因此,这会将 HashMap 转换为键值对的 ArrayList(.forEach仅适用于 API 24+;如果您需要较低版本的支持,请与迭代器交换(。

然后,您将对布局中的RecyclerView使用setAdapter方法。

最新更新