title: ListView not follow order to display after notifyDataSetChanged
body: <p>I dont know why my output of listview always in wrong order after I update the data in my activity.</p>
  
  <p>This is how I initialize the adapter in my activity</p>
  
  <pre><code>inboxTradeAdapter=new InboxTradeAdapter(InboxTradeActivity.this, R.layout.activity_inbox_trade, tradeArrayList,loginUserId);
  tradeList.setAdapter(inboxTradeAdapter);
  </code></pre>
  
  <p>I call </p>
  
  <pre><code>inboxTradeAdapter.notifyDataSetChanged();
  </code></pre>
  
  <p>after tradeArrayList is updated</p>
  
  <p>This is my Adapter</p>
  
  <pre><code>public class InboxTradeAdapter extends ArrayAdapter&lt;Trade&gt; {
  private List&lt;Trade&gt; tradeList;
  private Context context;
  private String loginUserId;
  
  public InboxTradeAdapter(Context context, int resource, List&lt;Trade&gt; tradeList, String loginUserId) {
      super(context, resource, tradeList);
      this.context = context;
      this.tradeList = tradeList;
      this.loginUserId=loginUserId;
  }
  
  @Override
  public boolean isEnabled(int position) {
      return true;
  }
  
  @Override
  public int getCount() {
      return ((null != tradeList) ?
              tradeList.size() : 0);
  }
  
  @Override
  public Trade getItem(int position) {
      return ((null != tradeList) ?
              tradeList.get(position) : null);
  }
  
  @Override
  public long getItemId(int position) {
      return position;
  }
  
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
      View view = convertView;
      LayoutInflater layoutInflater = (LayoutInflater) context
              .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  
      if (null == view) {
          view = layoutInflater.inflate(R.layout.grid_category, null);
      }
  
      final Trade trade = tradeList.get(position);
  
      if (trade != null) {
          final CardView tradeLayout = (CardView) view.findViewById(R.id.category_gridlayout);
          final TextView tradeName = (TextView) view.findViewById(R.id.category_name);
          final ImageView tradeImage = (ImageView) view.findViewById(R.id.category_icon);
  
          tradeName.setText(trade.getNameOwn());
          tradeName.setSelected(true);
  
          tradeLayout.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  //Toast.makeText(context, category.getId()+" "+category.getName(), Toast.LENGTH_LONG).show();
                  Intent intent = new Intent(context, InboxActivity.class);
                  intent.putExtra("loginUserId", loginUserId);
                  intent.putExtra("tradeId",String.valueOf(trade.getId()));
                  context.startActivity(intent);
              }
          });
      }
  
      return view;
  }
  }
  </code></pre>
  
  <p>I can confirm that the tradeArrayList order is correct in my activity but the listview display the trade in random order. I cannot find the bug, please help</p>