Android 根据项目数创建cardview列表

Android 根据项目数创建cardview列表,android,android-studio,listview,android-cardview,Android,Android Studio,Listview,Android Cardview,您好,我想根据InfoGenBibliotheque类中的字符串数量制作一个cardView列表。我真的不知道如何根据项目数创建CardView列表。如果有人能帮忙,我将不胜感激。我已经读到,我必须创建一个cardview布局文件来创建一个列表。 //编辑 所以我设法使用listView和BaseAdapter实现了它。但是,当我执行应用程序时,在哪里都找不到利润 InfoGenBiblioRequeste类: public class InfoGenBibliotheque {

您好,我想根据InfoGenBibliotheque类中的字符串数量制作一个cardView列表。我真的不知道如何根据项目数创建CardView列表。如果有人能帮忙,我将不胜感激。我已经读到,我必须创建一个cardview布局文件来创建一个列表。 //编辑 所以我设法使用listView和BaseAdapter实现了它。但是,当我执行应用程序时,在哪里都找不到利润

InfoGenBiblioRequeste类:

   public class InfoGenBibliotheque {

    private String SalutaionsAnglais [] = {
            "Certainly!",
            "Good afternoon.",
            "Good evening sir.",
            "Good Luck.",
            "Good morning."
    };

    private String SalutaionsFrancais [] = {
            "Certainement!",
            "Bon après-midi.",
            "Bonsoir Monsieur.",
            "Bonne chance.",
            "Bonjour."
    };
}
我的XML活动\u信息\u常规文件:

    <?xml version="1.0" encoding="utf-8"?>
        <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:context=".ui.InfoGeneralesActivity">

            <ListView
                android:id="@+id/listView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                android:layout_margin="10dp">

            </ListView>

    </android.support.constraint.ConstraintLayout>

仅使用
cardwiew
作为根元素即可使边距消失:

cardwiew
放在
FrameLayout
中可以获得边距:

(但我个人认为水平分隔线与卡片搭配不太好看。如果您希望它们不可见,请查看或使用
RecyclerView
而不是
ListView

第二种方法的xml:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<android.support.v7.widget.CardView

    android:id="@+id/expressionCardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    app:cardCornerRadius="8dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="10dp">
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:weightSum="2"
        android:orientation="vertical"
        android:gravity="center"
        android:padding="4dp">
       <!-- skipped inner Views here -->

    </LinearLayout>

</android.support.v7.widget.CardView>
</FrameLayout>


通常使用一个。不幸的是,你的问题有点宽泛,因为我必须写一篇RecyclerView教程才能为你提供答案。但这可能会有所帮助。如果您开始实施您的解决方案,并且在实施过程中遇到困难,请随意编辑您的问题,说明您迄今为止所做的工作以及您需要帮助的地方,然后我将尝试帮助您完成下一步。@0X0nosugar感谢您的关注,我已经设法使用了一个简单的listview,但问题是当我执行应用程序时,边距没有显示出来。我可以建议跳过围绕CardView的布局,只使用CardView本身作为列表行的根视图组吗?(它确实是从FrameLayout扩展而来的,所以我认为这应该是可能的)@0X0nosugar您可以编辑我的代码吗。我已经为您提供了所有的文件。非常感谢您,它为我工作了!我将查看RecyclerView教程
  public class ExpressionAdapter extends BaseAdapter {

    private Context context;
    private ArrayList<Expression> expressions;

    public ExpressionAdapter(Context context, ArrayList<Expression> expressions) {
        this.context = context;
        this.expressions = expressions;
    }

    @Override
    public int getCount() {
        return expressions.size();
    }

    @Override
    public Object getItem(int position) {
        return expressions.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null){
            convertView = View.inflate(context, R.layout.expressions_card_view,null);
        }

        TextView expressionFrancais = convertView.findViewById(R.id.expressionFrancais);
        TextView expressionAnglais = convertView.findViewById(R.id.expressionAnglais);
        Expression expression = expressions.get(position);

        expressionFrancais.setText(expression.getExpressionFrancais());
        expressionAnglais.setText(expression.getExpressionAnglais());


        return convertView;
    }
}
  public class ListExpression {

    public static ArrayList<Expression> getExpressionList(){
        ArrayList<Expression> expressionList = new ArrayList<>();
        InfoGenBibliotheque infoGenBibliotheque = new InfoGenBibliotheque();
        for(int i = 0;i < infoGenBibliotheque.getSalutaionsAnglais().length;i++){
            expressionList.add(new Expression(i,infoGenBibliotheque.getSalutationFrancais(i),infoGenBibliotheque.getSalutationAnglais(i)));
        }
        return expressionList;
    }
}
    public class Expression {

    private int idExpression;
    private String expressionFrancais;
    private String expressionAnglais;

    public Expression(int idExpression, String expressionFrancais, String expressionAnglais) {
        this.idExpression = idExpression;
        this.expressionFrancais = expressionFrancais;
        this.expressionAnglais = expressionAnglais;
    }

    public int getIdExpression() {

        return idExpression;
    }

    public void setIdExpression(int idExpression) {
        this.idExpression = idExpression;
    }

    public String getExpressionFrancais() {
        return expressionFrancais;
    }

    public void setExpressionFrancais(String expressionFrancais) {
        this.expressionFrancais = expressionFrancais;
    }

    public String getExpressionAnglais() {
        return expressionAnglais;
    }

    public void setExpressionAnglais(String expressionAnglais) {
        this.expressionAnglais = expressionAnglais;
    }
}
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<android.support.v7.widget.CardView

    android:id="@+id/expressionCardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    app:cardCornerRadius="8dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="10dp">
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:weightSum="2"
        android:orientation="vertical"
        android:gravity="center"
        android:padding="4dp">
       <!-- skipped inner Views here -->

    </LinearLayout>

</android.support.v7.widget.CardView>
</FrameLayout>