2015-11-03 2 views
0

У меня есть список типов Model_BarcodeDetail которые conatins атрибуты как barcode, area,location,color и т.д. , когда я вхожу штрихкод в EditText, я хочу, чтобы найти, что штрих-код в списке (список может имеют n число аналогичных штрих-кодов с аналогичной площадью и местоположением или другой областью и местоположением), если введенный штрих-код и аналогичный штрих-код, который находится в моем списке, имеют одинаковую область и местоположение, тогда я хочу doSomething() еще doSomethingElse().Как искать список, содержащий конкретные динамические значения

Код я попытался это:

private List<String> barcodeList = new ArrayList<String>(); 
barcode = editText_barcode.getText().toString().trim(); 
if ((scanned_barcode != null 
      && scanned_barcode.equalsIgnoreCase(barcode))) { 
     if ((!barcodeList.contains(barcode))) { 

// if barcode I entered does not contains in the list 
// It is working fine 
barcodeList.add(barcode);//barcodeList contains only barcode 

     } 
else if (barcodeList.contains(barcode)) { 

      data = list.get(barcodeList.indexOf(barcode)); 
    // here is the problem 
    // here I want to get data of the barcode that have similar area and 
    location 
      if (data.getArea() == selected_area 
        && data.getLocation() == selected_loc) { 

      doSomething(); 
} else { 
       doSomethingElse(); 
      } 

     } 
+0

Что такое тип данных 'barcodeList' –

+0

Я действительно не знаю, чего вы хотите. Вы хотите искать и показывать в своем списке или просто искать в цикле 'for'? –

ответ

0

Когда ваш список выглядит примерно так:

List<Model_BarcodeDetail> list = new ArrayList<Model_BarcodeDetail>()

вы можете использовать петлю Еогеасп:

 barcode = editText_barcode.getText().toString().trim(); 
     if ((scanned_barcode != null 
      && scanned_barcode.equalsIgnoreCase(barcode))) { 
     if ((!barcodeList.contains(barcode))) { 

      // if barcode I entered does not contains in the list 
      // It is working fine 
     } 

     for (Model_BarcodeDetail model_barcodeDetail : list) { 
      if (model_barcodeDetail.getArea() == selected_area && model_barcodeDetail.getLocation() == selected_loc) { 
       doSomething(); 
       break; 
      } 
     } 

     // Nothing found 
     doSomethingElse(); 

    } 
1

Искать вашу строку в списке массивов и получить объект, а затем проверить местоположение штрих-кода, вот пример кода:

barcode = editText_barcode.getText().toString().trim(); 
      if ((scanned_barcode != null 
       && scanned_barcode.equalsIgnoreCase(barcode))) { 
      Model_BarcodeDetail model_barcodeDetail=getBarcodeDetails(barcode); 
// for handling array do this in loop 
      if (model_barcodeDetail!=null && model_barcodeDetail.getArea() == selected_area && model_barcodeDetail.getLocation() == selected_loc) { 
       doSomething(); 
      }else{ 
       doSomethingElse(); 
      } 
     } 

/* your list can contain n number of similar bar code then change return type of this function to Model_BarcodeDetail[] */ 
    private Model_BarcodeDetail getBarcodeDetails(Sttring barcode){ 

     for (Model_BarcodeDetail model_barcodeDetail : list) { 
      if (barcode.eqauals(model_barcodeDetail.getBarcode)){ 
       return model_barcodeDetail; 
      } 
     } 
     return null; 
    } 
+0

Спасибо, это помогло мне .. :) –

+0

@SheenaTyagi ответьте как принято, если это полезно –

Смежные вопросы