О классе адаптера Как получить ключ и значение из HashMap - PullRequest
0 голосов
/ 12 июня 2018

В моем RecyclerViewAdapter классе я передаю HashMap<String,ArrayList<Custom>> в качестве данных, теперь я хочу получить ключ и значение для каждой позиции, но я не знаю, как мне это сделать!заранее спасибо

public class Main_Recycler_Single_Row extends RecyclerView.Adapter<Main_Recycler_Single_Row.ViewHolder> {



private Context mContext;
private HashMap<String,ArrayList<Products>> dataSet;

public Main_Recycler_Single_Row(Context mContext, HashMap<String,ArrayList<Products>> mDataSet) {
    this.mContext = mContext;
    this.dataSet = mDataSet;

} @Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

    Map.Entry<String,ArrayList<Products>> entry=(Map.Entry<String,ArrayList<Products>>) dataSet.entrySet();//this line is my problem!


    holder.header.setText(entry.getKey());

    holder.mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext,LinearLayoutManager.HORIZONTAL,false));
    holder.mRecyclerView.setHasFixedSize(true);
    holder.mRecyclerView.setAdapter(new Main_Recycler_Sinle_Item(mContext,entry.getValue()));

}

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Надеюсь, это работает для вас:

holder.header.setText(dataSet.getKey().toArray()[position]);// for key
holder.productDesc.setText(dataSet.get(position)
.get(productPosition).getDesc())  //sample for getting product description
0 голосов
/ 12 июня 2018

Если вы пытаетесь получить Value из HashMap с помощью position, вам также необходимо сохранить Array из keys

keys = (String[])mDataSet.keySet().toArray();

Ваш класс ViewHolder будет выглядеть следующим образом:

public Main_Recycler_Single_Row(Context mContext, HashMap<String,ArrayList<Products>> mDataSet) {
    this.mContext = mContext;
    this.dataSet = mDataSet;
    keys = (String[])mDataSet.keySet().toArray();

} @Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {

    holder.header.setText(keys[position]);

    holder.mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext,LinearLayoutManager.HORIZONTAL,false));
    holder.mRecyclerView.setHasFixedSize(true);
    holder.mRecyclerView.setAdapter(new Main_Recycler_Sinle_Item(mContext,dataSet.get(keys[position])));

}
0 голосов
/ 12 июня 2018

Вы должны использовать entry.getvalue ();для получения значений

String key = entry.getKey(); ArrayList<Products> value = entry.getValue();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...