这是代码。
public class QuotesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int PRICE_PICKER_MAX_VALUE = 1000000;
private static final int PRICE_PICKER_MIN_VALUE = 500;
private static final int PRICE_PICKER_INTERVAL_VALUE = 500;
private List<Quote> mQuotes;
private String[] mPickerValues;
private String mSelectedQuotePrice;
private OnQuoteActionListener mListener;
private Context mContext;
/**
* @param context a context
* @param quotes the data for this adapter
*/
public QuotesAdapter(Context context, List<Quote> quotes) {
mContext = context;
mQuotes = quotes;
}
private String[] getArrayWithSteps (int iMaxValue, int iMinValue, int iStep) {
int iStepsArray = (iMaxValue-iMinValue)/iStep+1; //get the lenght array that will return
String[] arrayValues= new String[iStepsArray]; //Create array with length of iStepsArray
for(int i = 0; i < iStepsArray; i++) {
arrayValues[i] = String.valueOf(iMinValue + (i*iStep));
}
return arrayValues;
}
private void setPricePickerSelection (String valueToSet, Spinner numPicker) {
for (int i = 0; i < mPickerValues.length; i++)
if (mPickerValues[i].equals(valueToSet)) {
numPicker.setSelection(i, true);
}
}
@Override
public int getItemCount() {
return mQuotes.size();
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int rawPosition) {
final ItemViewHolder itemViewHolder = (ItemViewHolder) viewHolder;
final Quote item = mQuotes.get(rawPosition);
//Update from / to city information
String fromCity = item.getFromCity();
String toCity = item.getToCity();
Typeface myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Bold.ttf");
if (StringUtils.isNotBlank(fromCity) && StringUtils.isNotBlank(toCity)) {
StringBuffer sb = new StringBuffer(" ").append(fromCity).append(" ");
itemViewHolder.mFromCityView.setText(sb.toString());
itemViewHolder.mToCityView.setText(" " + toCity);
myFont= Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-SemiBold.ttf");
itemViewHolder.mFromCityView.setTypeface(myFont);
itemViewHolder.mToCityView.setTypeface(myFont);
myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Medium.ttf");
itemViewHolder.mToCityTitleView.setTypeface(myFont);
itemViewHolder.mFromCityTitleView.setTypeface(myFont);
ViewUtils.setMultipleToVisible(itemViewHolder.mFromCityView, itemViewHolder.mToCityView, itemViewHolder.mFromCityTitleView, itemViewHolder.mToCityTitleView);
} else {
ViewUtils.setMultipleToGone(itemViewHolder.mFromCityView, itemViewHolder.mToCityView, itemViewHolder.mFromCityTitleView, itemViewHolder.mToCityTitleView);
}
//Update the Logistics Company name
itemViewHolder.mCompanyView.setText(item.getLogisticsCompanyName());
myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Bold.ttf");
itemViewHolder.mCompanyView.setTypeface(myFont);
myFont=Typeface.createFromAsset(mContext.getAssets(), "fonts/Rajdhani-Medium.ttf");
itemViewHolder.mRequestDateView.setText(item.getRequestDate());
itemViewHolder.mCloesByView.setText(item.getRequestEndDate());
itemViewHolder.mTruckType.setText(item.getTruckType());
itemViewHolder.mCapacity.setText(item.getCapacity() + "");
itemViewHolder.mRequestDateView.setTypeface(myFont);
itemViewHolder.mCloesByView.setTypeface(myFont);
itemViewHolder.mTruckType.setTypeface(myFont);
itemViewHolder.mCapacity.setTypeface(myFont);
int price = item.getMoney();
//Load the picker values in defined intervals
mPickerValues = getArrayWithSteps(PRICE_PICKER_MAX_VALUE, PRICE_PICKER_MIN_VALUE, PRICE_PICKER_INTERVAL_VALUE);
// Creating adapter for truck options spinner
ArrayAdapter<String> quotePriceOptionsAdapter = new ArrayAdapter<String>(mContext,
android.R.layout.simple_spinner_dropdown_item, mPickerValues);
// attaching data adapter to spinner
itemViewHolder.mPricePicker.setAdapter(quotePriceOptionsAdapter);
setPricePickerSelection(String.valueOf(price), itemViewHolder.mPricePicker);
itemViewHolder.mPricePicker.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int selectedQuotePricePosition = parent.getSelectedItemPosition();
mSelectedQuotePrice = mPickerValues[selectedQuotePricePosition];
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
itemViewHolder.mIgnoreQuoteView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onIgnore(item.getRequestID());
}
}
});
itemViewHolder.mQuoteButtonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
item.setMoney(Integer.parseInt(mSelectedQuotePrice));
mListener.onQuote(item);
}
}
});
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_quote_item,
parent, false);
return new ItemViewHolder(view);
}
public void setQuoteActionListener(OnQuoteActionListener listener) {
mListener = listener;
}
public interface OnQuoteActionListener {
public void onQuote(Quote quote);
public void onIgnore(int requestID);
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
public TextView mFromCityTitleView ;
public TextView mFromCityView;
public TextView mToCityView;
public TextView mToCityTitleView;
public TextView mCompanyView ;
public TextView mRequestDateView;
public TextView mCloesByView;
public TextView mTruckType;
public TextView mCapacity;
public Button mQuoteButtonView;
public Button mIgnoreQuoteView;
public Spinner mPricePicker;
public ItemViewHolder(View v) {
super(v);
mFromCityTitleView = (TextView) v.findViewById(R.id.quote_item_from);
mFromCityView = (TextView) v.findViewById(R.id.quote_item_fromcity);
mToCityTitleView = (TextView) v.findViewById(R.id.quote_item_to);
mToCityView = (TextView) v.findViewById(R.id.quote_item_tocity);
mCompanyView = (TextView) v.findViewById(R.id.quote_company);
mRequestDateView = (TextView) v.findViewById(R.id.quote_item_requestedDate);
mCloesByView = (TextView) v.findViewById(R.id.quote_item_closesby);
mTruckType = (TextView) v.findViewById(R.id.quote_item_truck_type);
mCapacity = (TextView) v.findViewById(R.id.quote_item_capacity);
mQuoteButtonView = (Button) v.findViewById(R.id.button_quote);
mIgnoreQuoteView = (Button) v.findViewById(R.id.button_ignore);
mPricePicker = (Spinner) v.findViewById(R.id.quote_pricePicker);
}
}
}`
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:background="@color/back_white"
android:orientation="horizontal">
<Spinner
android:id="@+id/quote_pricePicker"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="left"/>
</LinearLayout>
答案 0 :(得分:0)
为Spinner创建适配器时,会提供自定义布局而不是预定义布局
创建名为 spinner_row.xml
的xml<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cust_view"
android:layout_width="match_parent"
android:textColor="@color/black"
android:textSize="12sp"
android:layout_height="36dp"
android:gravity="left|center_vertical"/>
在这里,您可以通过修改此textview来更改微调器中元素的颜色文本大小和宽度和高度
在创建适配器
时使用它ArrayAdapter<String> adapter=new ArrayAdapter<String>(context, R.layout.spinner_row,yourlist);
最后一项任务是常规的
spinner.setAdapter(adapter);
我希望这会对你有所帮助。