2016-03-30 8 views
0

SimpleAdapterでListViewを取得しました。私のリストビューでいくつかの項目をクリックすると、2つの異なる変数が表示されます。 いくつかのコード:5.0 varibleなぜAndroidのバージョンによって変数が変わるのですか?

String positions = parent.getAdapter().getItem(position).toString(); 

までアンドロイド4.3の下でリストビューから私のアイテムをクリックしたのであれば

// Listview Data 
     ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(Invoice_numberArr.length); 
     Map<String, Object> m; 
     for(int i = 0; i<Invoice_numberArr.length; i++){ 
      int str = Integer.parseInt(Invoice_numberArr[i]); 
      int str2 = Integer.parseInt(InvoiceNumberForDetails); 
      if(str == str2){ 
       m = new HashMap<String, Object>(); 
       m.put(ATT_INU, Invoice_numberArr[i]); 
       m.put(ATT_ANU, Article_numberArr[i]); 
       m.put(ATT_AMO, AmountArr[i]); 
       m.put(ATT_PRE, PriceArr[i]); 
       m.put(ATT_TPR, Total_priceArr[i]); 
       m.put(ATT_SDE, Sale_designationArr[i]); 
       data.add(m); 
      } 
     } 

     String[] from = {ATT_INU, ATT_ANU, ATT_AMO, ATT_PRE, ATT_TPR, ATT_SDE}; 
     int[] till = {R.id.txtInvoice_number, R.id.txtArticle_number, R.id.txtAmount, R.id.txtPrice, R.id.txtTotalPrice, R.id.txtSale_designation}; 

     //activities elements 
     invoices_list_details_view = (ListView)findViewById(R.id.invoices_list_details_view); 

     invoicesDetailsSAdapter = new SimpleAdapter(InvoicesDetails.this, data, R.layout.invoices_list_item_details_view, from , till); 
     invoices_list_details_view.setAdapter(invoicesDetailsSAdapter); 

     Utility Utility = new Utility(); 
     Utility.setListViewHeightBasedOnChildren(invoices_list_details_view); 

     //if item clicked 
     invoices_list_details_view.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       String positions = parent.getAdapter().getItem(position).toString(); 

       //int positions = parent.getAdapter().; 
       parent.getAdapter(); 
       int indexPos = -1; // if doesnt exist 
       for (int i = 0; i < Invoice_numberArr.length; i++) { 
        if (positions.contains("article_numbers="+Article_numberArr[i]+", "+"sale_designations="+Sale_designationArr[i]+", "+"amounts="+AmountArr[i]+", "+"invoice_numbers=" + Invoice_numberArr[i]+", "+"prices="+PriceArr[i]+", "+"total_prices="+Total_priceArr[i])) { 
         indexPos = i; 
         break; 
        } else if (positions.contains("prices="+PriceArr[i]+", "+"article_numbers="+Article_numberArr[i]+", "+"amounts="+AmountArr[i]+", "+"sale_designations="+Sale_designationArr[i]+", "+"invoice_numbers=" + Invoice_numberArr[i]+", "+"total_prices="+Total_priceArr[i])){ 
         indexPos = i; 
         break; 
        } 
       } 
       //some int to transfer it to position class 
       int integerr = indexPos; 

       Intent invoices_details_position = new Intent(InvoicesDetails.this, InvoicesDetailsPosition.class); 
       invoices_details_position.putExtra("saleDesignationForPosition", Sale_designationArr[indexPos]); 
       invoices_details_position.putExtra("articleNumberForPosition", Article_numberArr[indexPos]); 
       invoices_details_position.putExtra("sequenceNumberForPosition", Sequence_numberArr[indexPos]); 
       invoices_details_position.putExtra("amountForPosition", AmountArr[indexPos]); 
       invoices_details_position.putExtra("warehouseForPosition", WarehouseArr[indexPos]); 
       invoices_details_position.putExtra("containerDescriptionForPosition", Container_descriptionArr[indexPos]); 
       invoices_details_position.putExtra("priceForPosition", PriceArr[indexPos]); 
       invoices_details_position.putExtra("discountForPosition", DiscountArr[indexPos]); 
       invoices_details_position.putExtra("totalPriceForPosition", Total_priceArr[indexPos]); 

       startActivity(invoices_details_position); 
      } 
     }); 

は私に

string " {prices=10.8, article_numbers=0736, amounts=1, sale_designations=Pfirsichlikör, invoice_numbers=1, total_prices=10.8} " 

を示し、Iは、Androidバージョン5.1の下でクリックした場合は、その私を示す

string " {article_numbers=0736, sale_designations=Pfirsichlikör, amounts=1, invoice_numbers=1, prices=10.8, total_prices=10.8} " 

私はその

for (int i = 0; i < Invoice_numberArr.length; i++) { 
      if (positions.contains("article_numbers="+Article_numberArr[i]+", "+"sale_designations="+Sale_designationArr[i]+", "+"amounts="+AmountArr[i]+", "+"invoice_numbers=" + Invoice_numberArr[i]+", "+"prices="+PriceArr[i]+", "+"total_prices="+Total_priceArr[i])) { 
       indexPos = i; 
       break; 
      } else if (positions.contains("prices="+PriceArr[i]+", "+"article_numbers="+Article_numberArr[i]+", "+"amounts="+AmountArr[i]+", "+"sale_designations="+Sale_designationArr[i]+", "+"invoice_numbers=" + Invoice_numberArr[i]+", "+"total_prices="+Total_priceArr[i])){ 
       indexPos = i; 
       break; 
      } 
     } 

で二回、それをチェックする必要がありそれが私の質問は今、なぜそれがAndroidのバージョンによって変わりないので? Thxのヘルプ。

+0

'HashMap'sためHashMap s作品が注文されていないコレクション@マイクM.ありがとうございました。つまり、要素を反復処理するときに要素を取得する順序を保証するものはありません。一貫した順序付けが必要な場合は、挿入順序を維持する 'LinkedHashMap'を使用してください。 –

+1

ええ、あなたは正しい、ありがとう、その助け!アプリはうまく動作します:) – sausagerus

答えて

0

LinkedHashMap s代わりに、すべてのAndroid

関連する問題