title: Picker With Dynamic List triggers onValueChange - React Native (Android)
body: <p>I have a Picker whose list loads dynamically, based on what has previously been selected.  When I select a value from the list, I would like to move it to a different list and remove it from the options.  The issue is that when I select an option, every time the list is re-rendered due to the setState, it selects the topmost value, and fires the onValueChange for that value.  This causes every value to fire an event and empties the list every time.</p>
  
  <p>I have tried separating the picker into its own component, I have tried it both with and without a default selected value, I've set the selected value to be the topmost value, null, undefined, you name it.  I cannot figure out how to prevent this event from firing when I reload the list.</p>
  
  <p>Take the <a href="https://rnplay.org/apps/4UMQCw" rel="noreferrer">following demo app</a>, for example:</p>
  
  <pre><code>import React, { Component } from 'react';
  import {
    AppRegistry,
    Picker,
    Text,
    View
  } from 'react-native';
  
  export default class Sandbox extends Component {
    constructor(props) {
      super(props);
  
      this.state = {
        list: [
          {id: 1, title: "One"},
          {id: 2, title: "Two"},
          {id: 3, title: "Three"},
          {id: 4, title: "Four"},
        ],
        selected: []
      };
    }
  
    updateLists(id) {
      var list = this.state.list;
      var selected = this.state.selected
      for(var i = 0; i &lt; list.length; i++) {
        var obj = list[i];
        if(obj.id == id) {
          selected.push(obj);
          list.splice(i, 1)
        }
      }
  
      this.setState({ list: list, selected: selected });
    }
  
    render() {
      return (
        &lt;View&gt;
          &lt;Picker
            onValueChange={(id) =&gt; {
              this.updateLists(id);
            }}&gt;
            {this.state.list.map((item, index) =&gt; {
                  return &lt;Picker.Item key={index} label={item.title} value={item.id} /&gt;
              })}
          &lt;/Picker&gt;
          &lt;Text&gt;{this.state.selected.toString()}&lt;/Text&gt;
        &lt;/View&gt;
      );
    }
  }
  
  AppRegistry.registerComponent('Sandbox', () =&gt; Sandbox);
  </code></pre>
  
  <p>Selecting any value from that list will trigger the <code>updateLists()</code> method for every value until they are all removed.  Using the attached RN Play link, I've found that this appears to be an Android only issue.  iOS works (mostly) fine.</p>