如何在适配器内部的View中为图像充气

时间:2019-09-05 17:23:03

标签: java android listview android-recyclerview android-arrayadapter

想法

我想让我的用户收集项目,这些项目将显示在ListView的自定义适配器内的View中。 该适配器从列表中获取数据 香蕉具有以下数据模型:

  • 字符串标题
  • 字符串说明
  • 额外的字符串
  • Int nr
  • 最大整数
  • 字符串网址

我希望我的视图显示2种不同类型的图像,一种类型是已经收集的香蕉数量,其alpha = 1,另一种类型是imageview,其alpha = 0.5f(基本上是收取金额)。在4张图像(固定值)之后,我希望视图更改行并显示另一行图像,直到再次达到4项为止。为了清楚起见,我附上了这个主意的图片:

How it should look like

** ADAPTER.XML **

<RelativeLayout
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:padding="6dip" >

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/title_text_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title Text"
        android:textSize="@dimen/text_normal"


        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/tv_desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Description"
        android:textSize="@dimen/text_normal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tv_title" />


    <TextView
        android:id="@+id/tv_range"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RANGE: NOW / MAX"
        android:textSize="@dimen/text_normal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tv_desc" />


</androidx.constraintlayout.widget.ConstraintLayout>

<View
    android:id="@+id/icons"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginEnd="6dip"
    android:src="drawable/ic_error"
    android:layout_below="@id/title_text_layout"
    />

</RelativeLayout>

自定义布局:

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/VIP_ViewPager_ImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

/>

</androidx.constraintlayout.widget.ConstraintLayout>

** JAVA CODE **随时转换为Kotlin

public class BananaAdapter  extends ArrayAdapter<Banana> {

    private Context mContext;
    private List<Canana> bList;
    View mView;

    public xCardsAdapter(@NonNull Context context, List<Banana> list) {
        super(context, 0 , list);
        mContext = context;
        bList = list;
    }


        public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View listItem = convertView;
        if(listItem == null)
            listItem = LayoutInflater.from(mContext).inflate(R.layout.adapter_banana,parent,false);

        // SET TEXT HERE
        ...
        // SET TEXT HERE

        // Get to the images

        for(int i=0;i<list.getMax;i++) {
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.custom_layout,null);
        ImageView imageView =  view.findViewById(R.id.ViewPager_ImageView);
        imageView.setAlpha(1);

        }




        return listItem;
    }
}

直到这里应该可以工作,但是现在我有点不确定如何检查我是否已达到4个项目,同时检查何时必须从alpha = 1(收集的项目)切换到alpha = 0.5(未收集的物品)。

当我在这里使用View时这是正确的方式还是应该使用其他方式代替?

谢谢

0 个答案:

没有答案