java spinner_java – Spinner仅更新用户操作

我有IconText,里面有图像和文本视图,包括class和xml.

然后,我使用扩展的BaseAdapter(IconTextAdapter)作为适配器,使用这些IconTexts填充MainActivity内部的Spinner.

现在,IconText工作正常(显示它应该).

但旋转器没有.

>当我启动应用程序时,它会显示第一个IconText.

>当我打开选择对话框时,一切都正常显示.

>当我选择另一个项目时,选择对话框将折叠,并且微调器不显示IconText(即只有“向下箭头”用于打开选择对话框).

我仍然可以打开选择对话框并选择另一个.

我注意到,如果我退出应用程序(返回按钮,而不是真的退出应用程序)并再次输入,则会显示正确的IconText.

我猜错误在于适配器?

我会尝试避免发布大量代码[:

IconText.xml

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal">

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:src="@drawable/home"/>

android:id="@+id/it_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingLeft="20sp"

android:text="ABC"

android:textColor="@color/black_overlay"

android:textSize="20sp"

android:textStyle="bold" />

IconText.java

public class IconText {

static LayoutInflater inflator;

public ImageView icon;

public TextView text;

public View view;

public IconText(String title, int icon_id){

Log.d("IconText", "Create");

view = inflator.inflate(R.layout.icon_text, null);

text = (TextView) view.findViewById(R.id.it_text);

icon = (ImageView) view.findViewById(R.id.it_image);

text.setText(title);

icon.setImageResource(icon_id);

}

public static void initInflator(Context context){

if(inflator != null) return;

Log.d("IconText", "Init inflator");

inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

}

IconTextAdapter.java

public class IconTextAdapter extends BaseAdapter implements SpinnerAdapter{

public ArrayList items;

public IconTextAdapter(){

super();

items = new ArrayList<>();

}

@Override

public int getCount() {

return items.size();

}

@Override

public Object getItem(int arg0) {

return items.get(arg0);

}

@Override

public long getItemId(int position) {

return items.get(position).view.getId();

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

return items.get(position).view;

}

}

MainActivity,相关代码

void initFilter(){

Log.d("MainAction", "Find Filter");

filter = (Spinner) findViewById(R.id.filter);

Log.d("MainAction", "Create Adapter");

IconTextAdapter adapter = new IconTextAdapter();

Log.d("MainAction", "Create items");

for(int i=0; i

IconText it = new IconText(ETypes.names[i], ETypes.icons[i]);

adapter.items.add(it);

}

Log.d("MainAction", "Setting adapter");

filter.setAdapter(adapter);

}

ETypes名称[string]和icons [id]是静态的.

充气机成功初始化.

我在Android上没有多少工作.如果它是Java / Swing,我想我只会调用重绘或其他东西.

我知道这里有一些不好的做法(所有公共变量,等等).此代码仍处于早期原型阶段,很快就会修复.我不是在寻找优化,只是为了解决我的问题.

更新1:

所以我看到我没有实现getDropDownView所以我做了,与getView相同的代码(不需要发布它?).

我也做了一个实验:在IconText控制器的最后,我补充道

view = text

它工作正常(仅显示文本).

我想这可以确定问题源于自定义视图?

更新2:

用IconText做了另一个实验,设置了view = icon;并且它不会表现得如此,即.它表现得像是一个自定义视图.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值