Я пытаюсь установить положение стрелки вниз счетчика внутри пользовательского адаптера.
Содержимое счетчика - это количество продуктов, доступных для продажи.Но, как видно на рисунке, значок со стрелкой вниз остался ниже содержимого и толкает другой TextView в макете, и я не знаю причину.
Я хотел бы разместить значок стрелки вниз спиннера рядом с содержимым.При этом все макеты будут близки друг к другу и будут чисты для пользователя.
Вот мой xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="4dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/item_productImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/shopping_cart_black_48dp"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".6"
android:orientation="vertical"
android:layout_gravity="center_vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".6"
android:paddingLeft="4dp"
android:text="Codigo"
android:textStyle="bold"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:paddingLeft="3dp"
android:text="Qt"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="@+id/item_productCode"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".6"
android:paddingLeft="4dp"
android:text="Code"
android:singleLine="true"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight=".4">
<Spinner
android:id="@+id/item_productAmountSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="3dp">
</Spinner>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/item_productPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="4dp"
android:text="Price"
android:singleLine="true"/>
</LinearLayout>
<ImageButton
android:id="@+id/item_productDeleted"
android:layout_width="55dp"
android:layout_height="35dp"
android:src="@drawable/delete_forever_black_48dp"
android:scaleType="fitCenter"
android:layout_gravity="center_vertical"
android:foregroundGravity="center"
android:background="@null"/>
<ToggleButton
android:id="@+id/item_productFavorite"
android:layout_width="40dp"
android:layout_height="42dp"
android:layout_marginRight="3dp"
android:layout_gravity="center_vertical"
android:textOff=""
android:textOn=""
android:background="@android:drawable/star_off"
android:text=""/>
</LinearLayout>
<TextView
android:id="@+id/item_productDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Description"
android:paddingLeft="8dp"
android:layout_marginBottom="5dp"
android:singleLine="true"/>
</LinearLayout>
А вот как я заполняю счетчик в специальном адаптере:
public class PurchaseListAdapter extends RecyclerView.Adapter<PurchaseListAdapter.PurchaseListViewHolder> {
private final String[] quantityValues = new String[] { "1", "2", "3", "4",
"5", "6", "7", "8", "9", "10" };
ArrayList<ProductObject> purchaseList;
Context mContext;
public PurchaseListAdapter(Context mContext, ArrayList<ProductObject> purchaseList) {
this.mContext = mContext;
this.purchaseList = purchaseList;
}
@NonNull
@Override
public PurchaseListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_purchase,null,false);
RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
layoutView.setLayoutParams(lp);
PurchaseListViewHolder rcv = new PurchaseListViewHolder(layoutView);
return rcv;
}
@Override
public void onBindViewHolder(@NonNull PurchaseListViewHolder holder, int position) {
if (purchaseList.get(position).getImage() != null) {
byte[] prodIMG = purchaseList.get(position).getImage();
Bitmap bitmap = BitmapFactory.decodeByteArray(prodIMG,0,prodIMG.length);
holder.mImage.setImageBitmap(bitmap);
Log.i("debinf prodadapter", "Private Image != null for "+purchaseList.get(position).getDescription());
} else {
holder.mImage.setImageResource(R.drawable.shopping_cart_black_48dp);
}
holder.mCode.setText(purchaseList.get(position).getCode());
holder.mPrice.setText(purchaseList.get(position).getPrice());
holder.mDescription.setText(purchaseList.get(position).getDescription());
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(mContext, R.layout.support_simple_spinner_dropdown_item, quantityValues);
spinnerAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
holder.mAmount.setAdapter(spinnerAdapter);
//holder.mAmount.setText(purchaseList.get(position).getAmount());
holder.mFavorite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
//Toast.makeText(mContext, "You favorited " + purchaseList.get(position).getDescription(), Toast.LENGTH_SHORT).show();
buttonView.setBackgroundResource(android.R.drawable.star_on);
} else {
//Toast.makeText(mContext, "You UNfavorited " + purchaseList.get(position).getDescription(), Toast.LENGTH_SHORT).show();
buttonView.setBackgroundResource(android.R.drawable.star_off);
}
}
});
}
@Override
public int getItemCount() {
return purchaseList.size();
}
public class PurchaseListViewHolder extends RecyclerView.ViewHolder {
public CircleImageView mImage;
public TextView mCode, mPrice, mDescription;
public ImageButton mProductDeleted;
public ToggleButton mFavorite;
public Spinner mAmount;
public PurchaseListViewHolder(@NonNull View itemView) {
super(itemView);
mImage = (CircleImageView) itemView.findViewById(R.id.item_productImage);
mCode = (TextView) itemView.findViewById(R.id.item_productCode);
mAmount = (Spinner) itemView.findViewById(R.id.item_productAmountSpinner);
mPrice = (TextView) itemView.findViewById(R.id.item_productPrice);
mDescription = (TextView) itemView.findViewById(R.id.item_productDescription);
mProductDeleted = (ImageButton) itemView.findViewById(R.id.item_productDeleted);
mFavorite = (ToggleButton) itemView.findViewById(R.id.item_productFavorite);
}
}
}
Я ценю любую помощь.
PS .: Интересно, что счетчик с содержимым Ligar имеет значок стрелки вниз рядом с содержимым,но счетчик в RecyclerView не имеет.