在片段中有内部类的情况下,如何使用地图?我是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 );
}
} ...
那么,您是否有几个需要接受母班的片段?我是学生,但仍然遇到一些困难
答案 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);