我使用this库进行微调器。我想从微调器中的列表中更改已选择项的颜色。我该怎么做?这就是我在微调器上填充数据的方式:
spinner1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
Cursor crs = database.rawQuery("SELECT * FROM "+ ItemsTable.TABLE_ZONE +" WHERE "+ ItemsTable.COLUMN_ZONE_ID +"<>"+ zone_id1
+" AND "+ ItemsTable.COLUMN_ZONE_ID +"<>"+ zone_id2 +" AND "+ ItemsTable.COLUMN_ZONE_ID +"<>"+ zone_id3 +"", null);
Integer[crs.getCount()];
List<Zone> listOfZones = new ArrayList<Zone>();
while(crs.moveToNext())
{
String title = crs.getString(crs.getColumnIndex("title"));
Integer title_id = crs.getInt(crs.getColumnIndex("id"));
listOfZones.add(new Zone(title_id, title));
}
crs.close();
ArrayAdapter<Zone> zoneadapter = new ArrayAdapter<Zone>(getActivity(),
android.R.layout.simple_dropdown_item_1line, listOfZones);
spinner1.setAdapter(zoneadapter);
}
return false;
}
});
在上面的代码中,我从列表中删除已经选中的项目,但我想更改已选择项目的背景颜色。
答案 0 :(得分:1)
您可以通过为xml
创建spinner layout
文件来提供背景颜色。请按照以下步骤操作。
1)您需要在xml
文件夹下创建一个layout
文件。
2)创建包含一个显示项目名称的TextView
的布局。
3)为主rootview
布局提供背景颜色。例如android:background="@color/anycolor"
。
并在spinner适配器中绑定此布局。
这是自定义适配器:
public class CustomAdapter extends BaseAdapter {
Context context;
List<Zone> listOfZones;
LayoutInflater inflter;
public CustomAdapter(Context applicationContext, List<Zone> listOfZones) {
this.context = applicationContext;
this.listOfZones = listOfZones;
inflter = (LayoutInflater.from(applicationContext));
}
@Override
public int getCount() {
return flags.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflter.inflate(R.layout.your_layout_name, null);
TextView names = (TextView) view.findViewById(R.id.textView);
names.setText(listOfZones.get(i).yourObjectName);
return view;
}}
并将此绑定到spinner,如下所示:
CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),listOfZones);
your_spinner.setAdapter(customAdapter);