Как перебрать карту <String, List <Object> - PullRequest
0 голосов
/ 17 сентября 2018

Как мне использовать карту, где у меня есть внутренний класс во фрагментах?Я новичок в Android, и мне нужно передать этот тип карты в качестве параметра, и в каждом фрагменте, который необходим параметр, он должен быть заполнен классом типа объекта.

Класс;Мать;

public class ExpandableAdapterFragmentOracoes extends BaseExpandableListAdapter {

    private List <String> listGoup;
    private HashMap <String, List <OracoesDiariasFragment.Filho>> listData;
    private LayoutInflater inflater;


    public ExpandableAdapterFragmentOracoes(Context context, List<String> listGoup, HashMap<String, List<OracoesDiariasFragment.Filho>> listData) {
        this.listGoup = listGoup;
        this.listData = listData;
        inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

    } ....

Фрагмент, который вы получите:

public class OracoesDiariasFragment extends ListFragment {

    private List <String> listGroup;

//hash String , List type Object Filho (Internal class)
------------------------------------------------------
    private HashMap <String, List <Filho>> listData;

    public OracoesDiariasFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate( R.layout.fragment_oracoes_diarias, container, false );

        ExpandableListView expandableListView = (ExpandableListView) view.findViewById( R.id.expandableListView );
        criarLista(); 

        expandableListView.setAdapter( new ExpandableAdapterFragmentOracoes( getContext(),listGroup,listData ) ); 



 .....

.... Внутренний класс во Фрагменте

public static class Filho implements Parcelable {

    private String descricao;
    private int nameID;

    private Filho(Parcel p) {
        descricao = p.readString();
        nameID = p.readInt();
    }

    public static final Parcelable.Creator <Filho>
            CREATOR = new Parcelable.Creator <Filho>() {

        public Filho createFromParcel(Parcel in) {
            return new Filho( in );
        }

        public Filho[] newArray(int size) {
            return new Filho[size];
        }
    };

    public Filho(String descricao, int nameID) {
        this.descricao = descricao;
        this.nameID = nameID;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public int getNameID() {
        return nameID;
    }

    public void setNameID(int nameID) {
        this.nameID = nameID;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString( descricao );
        dest.writeInt( nameID );
    }
} ...

Итак, у вас есть несколько Фрагментов, которые нужно получить для Матери класса?Я студент, и у меня все еще есть некоторые трудности

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете сделать это 3 способами

1) Передача HashMap в качестве аргумента фрагменту

// Your variable
HashMap <String, List <OracoesDiariasFragment.Filho>> listData;

Bundle bundle = new Bundle();
bundle.put("ListData", listData);
OracoesDiariasFragment fragment = new OracoesDiariasFragment();
fragment.setArguments(bundle);

// You can access it in fragment like this
Bundle data = getArguments();
HashMap <String, List <OracoesDiariasFragment.Filho>> listData = (HashMap <String, List <OracoesDiariasFragment.Filho>>)data. getSerializableExtra("ListData);

2) Доступ к нему из родительского занятия

public class MyActivity extends AppCompatActivity {

    // Your variable
    HashMap <String, List <OracoesDiariasFragment.Filho>> listData;

    public HashMap <String, List <OracoesDiariasFragment.Filho>> getData() {
        return listData;
    }
}
// In fragment access it like this
HashMap <String, List <OracoesDiariasFragment.Filho>> listData = ((MyActivity)getActivity).getData();

3) Установка данных для фрагментации при создании (без использования связки) [Не рекомендуется]

public class MyFragment extends ListFragment {
    HashMap <String, List <OracoesDiariasFragment.Filho>> listData;

    public setData(HashMap <String, List <OracoesDiariasFragment.Filho>> listData) {
        this.listData = listData;
    }
}
MyFragment frgament = new MyFragment();
fragment.setData(listData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...