Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将大量可绘制图像加载到片段列表视图中?_Java_Android_Listview_Android Fragments - Fatal编程技术网

Java 如何将大量可绘制图像加载到片段列表视图中?

Java 如何将大量可绘制图像加载到片段列表视图中?,java,android,listview,android-fragments,Java,Android,Listview,Android Fragments,我正在为一本书开发一个应用程序,它有13个单元,每个单元包含许多练习,每个练习包含许多扫描图像(总共450个图像) 现在我有了一个主菜单活动和两个片段,fragmentA用于在ListView中显示练习,而fragmentB用于显示练习的扫描图像 我的主菜单活动包含13个按钮,每个按钮对应于每个单元,用于加载该单元的练习 我已经为每个单元分别创建了练习的字符串ArrayLists,以便在用户点击特定单元时将它们加载到fragmentA 1) 现在如何在列表视图中的片段b中加载图像? TypedA

我正在为一本书开发一个应用程序,它有13个单元,每个单元包含许多练习,每个练习包含许多扫描图像(总共450个图像)

现在我有了一个主菜单活动和两个片段,
fragmentA
用于在
ListView
中显示练习,而
fragmentB
用于显示练习的扫描图像

我的主菜单活动包含13个按钮,每个按钮对应于每个单元,用于加载该单元的练习

我已经为每个单元分别创建了练习的字符串
ArrayLists
,以便在用户点击特定单元时将它们加载到
fragmentA

1) 现在如何在
列表视图中的
片段b
中加载图像?
TypedArrays
,还是应该在主菜单类中创建
integerarray
(1
arraylist
用于所有单元的每个练习)

当我在
oncreateview
中设置
OnItemClick
ListView
时,在
fragmentA
中,它会将相同的操作分配给所有13个ArrayList的ListView项,即如果我将am图像分配给单元1的练习1,它会将该图像分配给所有单元的练习1


< P > 2)如何对所有单元的所有练习分别执行<代码> OnItMeCase?

< P> >开发前应考虑的几个事项:

  • 在应用程序中放置450个图像可能会导致应用程序规模过大。请记住,Google Play上.apk文件的大小限制是
  • 在UI上显示如此大规模的图像可能需要大量的处理能力,并可能导致错误。您需要在UI上异步加载图像
  • 如何在ListView的fragmentB中加载图像

    您可以使用in
    FragmentB

    要根据练习显示不同的内容,请将单击项目的位置从
    FragmentA
    传递到
    FragmentB
    ,并基于该位置,从UI上的
    ArrayList
    设置以下项目

    在片段中发送参数的方法

    Bundle bundle=new Bundle();
    bundle.putString("position", "0");
    FragmentB fragmentB=new FragmentB();
    fragmentB.setArguments(bundle);
    
    更新

    您需要创建模型类来保存内容,例如

    Unit.java

    public class Unit {
        public int unit;
        public ArrayList<Exercise> exercises;
    }
    
    公共类单元{
    公共国际股;
    公共阵列列表练习;
    }
    

    <> > <代码>练习也是一个模型类。

    在开发前应考虑的几个事项:

  • 在应用程序中放置450个图像可能会导致应用程序规模过大。请记住,Google Play上.apk文件的大小限制是
  • 在UI上显示如此大规模的图像可能需要大量的处理能力,并可能导致错误。您需要在UI上异步加载图像
  • 如何在ListView的fragmentB中加载图像

    您可以使用in
    FragmentB

    要根据练习显示不同的内容,请将单击项目的位置从
    FragmentA
    传递到
    FragmentB
    ,并基于该位置,从UI上的
    ArrayList
    设置以下项目

    在片段中发送参数的方法

    Bundle bundle=new Bundle();
    bundle.putString("position", "0");
    FragmentB fragmentB=new FragmentB();
    fragmentB.setArguments(bundle);
    
    更新

    您需要创建模型类来保存内容,例如

    Unit.java

    public class Unit {
        public int unit;
        public ArrayList<Exercise> exercises;
    }
    
    公共类单元{
    公共国际股;
    公共阵列列表练习;
    }
    

    其中,
    Exercise
    也是一个模型类。

    2)
    OnItemClickListener
    将为您提供列表中已单击的位置。使用它在
    ArrayList
    myList.get(position);
    )片段通信中进行查找,还可以查找设计“主细节视图”,听起来像您描述的那样。可能是这个或我正在使用这个,但它为所有练习提供了相同的id ` public void onItemClick(AdapterView父项,视图视图,int位置,长id){TextView TextView=(TextView)视图;Toast.makeText(getActivity(),“您单击了#”+“位置+”,这是列表:”+view.getId()、Toast.LENGTH_LONG).show();`2)
    OnItemClickListener
    将为您提供列表中已单击的位置。使用该位置在
    ArrayList
    中进行查找(
    myList.get(position);
    )片段通信:,同时查找设计“主详细视图”这听起来像你所描述的。可能是这个或我正在使用这个,但它为所有练习提供了相同的id `public void onItemClick(AdapterView父项,视图视图,int位置,长id){TextView TextView=(TextView)视图;Toast.makeText(getActivity(),“你点击了#”+position+”这是一个列表:“+view.getId(),Toast.LENGTH_LONG.show()”`这些图像的大小非常小,比如每个图像20-30KB,所以这不是问题,它总共是12mb,这就是我如何将数据从主活动传递到一个bundle.putStringArrayList(数据,单元1);bundle.putStringArrayList(数据,单元2);等等。现在我如何为单元1的所有项目以及单元2和单元3的所有项目获取不同的ID?你的意思是你在单击任何项目时获得相同的位置?假设我已经为练习1设置了一个祝酒词。如果单元1,它将显示单元2和单元3的练习1的相同祝酒词,直到13,我如何获取所有listview项目的ID,即不同的ID f或者所有13个单元的练习,这样我就可以在每次不同的点击上为不同的操作实现切换情况?我想你会混淆的是arraylist上的数据映射。你是如何在arraylist上映射单元和练习的?我已经为每个单元创建了arraylist,如arraylist unit1=new arraylist();现在,当我将这些列表传递给fragmentA时,就像这个bundle.putStringArrayList(DATA,unit1);然后在fragmentA中接收它,比如DATA=getArguments().getStringArrayList(main menu.DATA);然后fragment加载数据,这就是为什么onItemClick为每个练习的所有项目1分配相同的操作?你明白我说的吗?我想我很困惑