2

我有一个包含一堆微调器的列表视图,但是当我滚动列表视图时,微调器的值被重置。有没有办法解决这个问题?这就是我的 ArrayAdapter 类的样子。

公共类 ProductArrayAdapter 扩展 ArrayAdapter { 私有最终上下文上下文;

private final List<Product> values;

public ProductArrayAdapter( Context context, List<Product> values ) {
  super( context, R.layout.product_item, values );
  this.context = context;
  this.values = values;
}

@Override
public View getView( int position, View convertView, ViewGroup parent ) {
  LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
  View rowView = inflater.inflate( R.layout.product_item, parent, false );
  Product availableProduct = values.get( position );

  ((TextView) rowView.findViewById( R.id.productCode )).setText( Product.getProductName( availableProduct.getProductCode( ) ) );

  ((Spinner) rowView.findViewById( R.id.count )).setAdapter( productCounts );

  return rowView;
}

}

4

2 回答 2

6

我能够让它工作,但由于没有人回答我的问题,我将自己发布解决方案。

我创建了一个HashMap<Integer,Integer>名为 selectedItems 来存储 ArrayAdapter 的值,并将它们设置在 onItemSelected 侦听器中。并根据HashMap设置Spinner的当前选中项。

      if ( selectedItems.get( position ) != null ) {
    ((Spinner) rowView.findViewById( R.id.count )).setSelection( selectedItems.get( position ) );
  }

  ((Spinner) rowView.findViewById( R.id.count )).setOnItemSelectedListener( new OnItemSelectedListener( ) {

    public void onItemSelected( AdapterView<?> parent, View view,
        int pos, long id ) {
      selectedItems.put( position, pos );
    }

希望这对将来遇到同样问题的其他人有所帮助

于 2013-02-25T19:58:46.240 回答
0

以防万一它对任何人都有帮助,我在 listView 有一个editText和 one时遇到了同样spinner的问题,而且我对这两个视图都有问题。一旦我editText通过使用onFocusChangeListener而不是解决了问题onTextChangeListener请参阅此处的解决方案- 请参阅 defpillz 中的问题),微调器的问题就消失了。

于 2014-05-07T19:09:57.400 回答