如何遍历地图<string,list =“” <object =“”>

时间:2018-09-17 16:28:26

标签: android hashmap

在片段中有内部类的情况下,如何使用地图?我是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 :(得分:0)

您可以通过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);