创建自定义微调器时如何实现getView
How to implement getView when creating custom spinner
我想要自定义微调器,它在下拉列表中有图像和文本视图,所以我创建了不同的布局并对其进行了膨胀,并且它工作正常但是对于微调器的布局,在按下微调器之前我只想有一个像这样的文本"choose from list" 但是当我用
充气时
android.R.layout.simple_spinner_item
对于 getView,我只是得到一个下拉箭头,而不是文本
如何在 getView 中填充布局,我必须创建新的数据集吗?与下拉菜单不同?这是我的代码:我正在为自定义适配器实现 SpinnerAdapter
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.spinner_item, parent, false);
ImageView iv = (ImageView) convertView.findViewById(R.id.iv);
TextView tv = (TextView) convertView.findViewById(R.id.tv1);
iv.setImageResource(R.drawable.flower);
tv.setText(itemList[position]);
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(android.R.layout.simple_spinner_item,
parent, false);
return convertView;
}
在微调器适配器中声明 ViewHolder Class
private static class ViewHolder{
TextView tv_itemname;
}
并像这样修改您的 getView()
方法:
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
SpinnerListAdapter.ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.spinner_item_row, null);
holder = new SpinnerListAdapter.ViewHolder();
holder.tv_itemname = (TextView) vi.findViewById(R.id.tv_itemname);
vi.setTag( holder );
}
else
{
holder = (SpinnerListAdapter.ViewHolder) vi.getTag();
}
if (position == 0)
{
holder.tv_itemname.setText("Choose one of the following category");
}else{
holder.tv_itemname.setText(itemList[position]);
}
return vi;
}
text1
是 TextView
在 android.R.layout.simple_spinner_item
中的标识符
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(android.R.layout.simple_spinner_item,
parent, false);
TextView text1 = (TextView) convertView.findViewById(android.R.id.text1);
text1.setText(itemList[position]);
return convertView;
}
我想要自定义微调器,它在下拉列表中有图像和文本视图,所以我创建了不同的布局并对其进行了膨胀,并且它工作正常但是对于微调器的布局,在按下微调器之前我只想有一个像这样的文本"choose from list" 但是当我用
充气时android.R.layout.simple_spinner_item
对于 getView,我只是得到一个下拉箭头,而不是文本
如何在 getView 中填充布局,我必须创建新的数据集吗?与下拉菜单不同?这是我的代码:我正在为自定义适配器实现 SpinnerAdapter
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.spinner_item, parent, false);
ImageView iv = (ImageView) convertView.findViewById(R.id.iv);
TextView tv = (TextView) convertView.findViewById(R.id.tv1);
iv.setImageResource(R.drawable.flower);
tv.setText(itemList[position]);
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(android.R.layout.simple_spinner_item,
parent, false);
return convertView;
}
在微调器适配器中声明 ViewHolder Class
private static class ViewHolder{
TextView tv_itemname;
}
并像这样修改您的 getView()
方法:
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
SpinnerListAdapter.ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.spinner_item_row, null);
holder = new SpinnerListAdapter.ViewHolder();
holder.tv_itemname = (TextView) vi.findViewById(R.id.tv_itemname);
vi.setTag( holder );
}
else
{
holder = (SpinnerListAdapter.ViewHolder) vi.getTag();
}
if (position == 0)
{
holder.tv_itemname.setText("Choose one of the following category");
}else{
holder.tv_itemname.setText(itemList[position]);
}
return vi;
}
text1
是 TextView
在 android.R.layout.simple_spinner_item
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(android.R.layout.simple_spinner_item,
parent, false);
TextView text1 = (TextView) convertView.findViewById(android.R.id.text1);
text1.setText(itemList[position]);
return convertView;
}