Java 我的编辑器\u布局\u问题-2如何在scoll或listview中多次显示不同的片段

Java 我的编辑器\u布局\u问题-2如何在scoll或listview中多次显示不同的片段,java,android,android-studio,Java,Android,Android Studio,我有一个问题,我在网上还找不到 我的目标是基于给定元素的结构创建一个小Texteditor。基本上,你可以从3个不同的主题(开车、吃饭、额外费用)中选择一个元素,并提供一些信息,如时间、地址、价格。。。这些元素可以任意顺序和频率进行选择。到目前为止没有问题 问题: 对我来说真正困难的是所需的布局:每次选择上述主题之一并保存信息时,我都希望显示一个片段,显示给定的信息 是否可能以某种方式使用具有更改元素的listview? 也许使用scrollview更好,但我如何在需要时通过编程创建所需的fra

我有一个问题,我在网上还找不到

我的目标是基于给定元素的结构创建一个小Texteditor。基本上,你可以从3个不同的主题(开车、吃饭、额外费用)中选择一个元素,并提供一些信息,如时间、地址、价格。。。这些元素可以任意顺序和频率进行选择。到目前为止没有问题

问题: 对我来说真正困难的是所需的布局:每次选择上述主题之一并保存信息时,我都希望显示一个片段,显示给定的信息

是否可能以某种方式使用具有更改元素的listview? 也许使用scrollview更好,但我如何在需要时通过编程创建所需的fragmentcontainers,以避免提供几十个等待填充和显示的虚拟容器

请看一看图片-我希望它清楚地说明我想要描述的内容…

在互联网上搜索什么神奇的单词

我希望有人能在这里帮助我-谢谢你的耐心


到目前为止,这或多或少是一种创造性的解决方法。有人知道吗。这个概念是否会引起任何问题? 它是普通Listview的自定义适配器的代码。它通过ArrayList中的关键字safed来选择要膨胀的布局

public class EintragAdapter extends ArrayAdapter<EintragDH> {
private Context mContext;
private int mResource;

public EintragAdapter(@NonNull Context context, int resource, @NonNull List<EintragDH> objects) {
    super(context, resource, objects);
    mContext = context;
    mResource = resource;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

    String Elementtyp = getItem(position).getElementTyp();

    if(Elementtyp.equals("Add")){
        LayoutInflater inflater = LayoutInflater.from(mContext);
        convertView = inflater.inflate(R.layout.editorelement_add,parent,false);
    }

    if (Elementtyp.equals("Abfahrt")){


        String AbfahrtVon = getItem(position).getAbfahrtVon();
        String AbfahrtUhrzeit = getItem(position).getAbfahrtUhrzeit();

        LayoutInflater inflater = LayoutInflater.from(mContext);
        convertView = inflater.inflate(R.layout.editorelement_abfahrt,parent,false);

        TextView tvDatum = convertView.findViewById(R.id.tvDatum);
        TextView tvAbfahrtVon = convertView.findViewById(R.id.tvAbfahrtVon);
        TextView tvAbfahrtUhrzeit = convertView.findViewById(R.id.tvAbfahrtUhrzeit);

        tvAbfahrtVon.setText("Abfahrt von Zuhause: " + AbfahrtVon);
        tvAbfahrtUhrzeit.setText("Uhrzeit Abfahrt:\n" + AbfahrtUhrzeit);
    }

    if(Elementtyp.equals("Termin")){
        String TerminUhrzeiten = getItem(position).getTerminUhrzeiten();
        String TerminName = getItem(position).getTerminName();
        String TerminAnschrift = getItem(position).getTerminAnschrift();
        String TerminEinnahme = getItem(position).getTerminEinnahme();

        LayoutInflater inflater = LayoutInflater.from(mContext);
        convertView = inflater.inflate(R.layout.editorelement_termin,parent,false);

        TextView tvTerminUhrzeiten = convertView.findViewById(R.id.tvUhrzeitenTermin);
        TextView tvTerminName = convertView.findViewById(R.id.tvTerminName);
        TextView tvTerminAnschrift = convertView.findViewById(R.id.tvTerminAnschirft);
        TextView tvTerminEinnahme = convertView.findViewById(R.id.tvTerminEinnahmen);

        tvTerminUhrzeiten.setText(TerminUhrzeiten);
        tvTerminName.setText(TerminName);
        tvTerminAnschrift.setText(TerminAnschrift);
        tvTerminEinnahme.setText("+ " + TerminEinnahme + "€");
    }

    return convertView;
}
公共类EintragAdapter扩展了ArrayAdapter{
私有上下文;
私人国际资源;
公共EintragAdapter(@NonNull上下文,int资源,@NonNull列表对象){
超级(上下文、资源、对象);
mContext=上下文;
mResource=资源;
}
@非空
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级){
字符串Elementtyp=getItem(位置).getElementTyp();
if(元素类型等于(“加法”)){
LayoutFlater充气机=LayoutFlater.from(mContext);
convertView=充气机。充气(R.layout.editorelement\u添加,父项,false);
}
if(元素类型等于(“Abfahrt”)){
字符串AbfahrtVon=getItem(位置).getAbfahrtVon();
字符串abfahruthrzeit=getItem(位置).getabfahruthrzeit();
LayoutFlater充气机=LayoutFlater.from(mContext);
convertView=充气机。充气(R.layout.editorelement_abfahrt,父项,false);
TextView-TVDatam=convertView.findViewById(R.id.TVDatam);
TextView tvAbfahrtVon=convertView.findViewById(R.id.tvAbfahrtVon);
TextView TvabFahruthZeit=convertView.findViewById(R.id.TvabFahruthZeit);
setText(“Abfahrt von Zuhause:+AbfahrtVon”);
设置文本(“Uhrzeit Abfahrt:\n”+abfahrzeit);
}
if(元素类型等于(“终端”)){
字符串TerminUhrzeiten=getItem(position).getTerminUhrzeiten();
字符串TerminName=getItem(位置).getTerminName();
字符串TerminAnschrift=getItem(position).getTerminAnschrift();
字符串TerminEinnahme=getItem(position).getTerminEinnahme();
LayoutFlater充气机=LayoutFlater.from(mContext);
convertView=充气机。充气(R.layout.editorelement\u Term,父项,false);
TextView tvTerminUhrzeiten=convertView.findViewById(R.id.TvUhrzeiterMin);
TextView tvTerminName=convertView.findViewById(R.id.tvTerminName);
TextView tvTerminAnschrift=convertView.findViewById(R.id.tvTerminAnschrift);
TextView tvTerminEinnahme=convertView.findViewById(R.id.tvTerminEinnahmen);
tvTerminUhrzeiten.setText(TerminUhrzeiten);
tVTerminame.setText(terminame);
tvTerminAnschrift.setText(TerminAnschrift);
tveterminannahme.setText(“+”+termineinnhme+“€”);
}
返回视图;
}

}

您不需要对多个类型使用片段,请使用
recyclerview的
itemtype
识别要显示的视图感谢您的支持!我想这就是我一直在寻找的魔法词:-)itemtype解决了你的问题吗?我很难在recyclerview中找到关于多个项目的有用教程(我不是专业程序员…),所以过了一段时间后,我尝试了其他方法:你认为使用具有以下概念的普通listview怎么样:(代码如下):我正常创建listview,但是会在适配器中选择什么样的布局会被它工作的键变量的文本膨胀,但是我不知道这种黑客行为以后是否会导致任何问题……你认为呢?