0

Прямо сейчас я использую ArrayList для моего списка ListView, и в моем приложении есть пользовательский ListView.Как использовать ArrayList для такой реализации? или Если HashMap хорош для него, то как использовать его для такой реализации?

Смотрите изображение ниже: enter image description here

Теперь я использую этот код для отображения списка и установите значение в ListView:

public void getOrders(){ 
     try{ 
//    if(employer) 
//    { 
        System.out.println("You are in Employer"); 
        m_orders = new ArrayList<Order>(); 
        payListForEmployer = new String[] {"Tax Code","Pay period Begin","Pay Frequency","Salary/Wage per pay", 
          "Net or Gross Amount","KiwiSaver Member","Employee Deduction","Employee Contributions", 
          "Complying Fund Member","Fund Contribution","ESCT Tax Rate","Child Support Deduction","Payroll giving donation"}; 

        Order o[]=new Order[payListForEmployer.length]; 
        System.out.println("The Length of payListEmployer is: "+payListForEmployer.length); 

        for (int i = 0; i < payListForEmployer.length; i++) 
        { 
         o[i]=new Order(); 
         o[i].setOrderName(payListForEmployer[i]); 

         // for TAXCODE 
         if(i==0) { 
          taxCodeValue = PAYEEmployerDetail.taxCodeFinalValue; 
          if((taxCodeValue==null)) { 
           taxCodeValue = "Please select"; 
          } 
          o[i].setOrderStatus(taxCodeValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 

         } 
         // for Pay Period Begin 
         if(i==1) { 
          //payPeriodValue = myPrefs.getString("payperiod", "12 09 2011"); 
          payPeriodValue = PAYEEmployerDetail.payPeriodFinalValue; 
          if((payPeriodValue==null)) { 
           payPeriodValue = "--/--/----"; 
          } 
          o[i].setOrderStatus(payPeriodValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 
         // for Pay frequency 
         if(i==2) { 
          //payFrequencyValue = myPrefs.getString("payfrequency", "Weekly"); 
          payFrequencyValue = PAYEEmployerDetail.payFrequencyFinalValue; 
          if((payFrequencyValue==null)) { 
           payFrequencyValue = "Please select"; 
          } 
          o[i].setOrderStatus(payFrequencyValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 
         // for salary/wage 
         if(i==3) { 
          salaryWageValue = PAYEEmployerDetail.salaryWageFinalValue; 
          if((salaryWageValue==null)||(salaryWageValue.equals(""))) { 
           salaryWageValue = "$0"; 
          } 
          else{ 
           salaryWageValue = "$"+salaryWageValue; 
          } 
          o[i].setOrderStatus(salaryWageValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 
         // For Gross/Net 
         if(i==4) { 

          o[i].setOrderStatus("Gross"); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 

         // for KiwiSaver Member 
         if(i==5){ 
          kiwiSaverMemberValue = PAYEEmployerDetail.kiwiSaverMemberFinalValue; 
          if((kiwiSaverMemberValue==null)||(kiwiSaverMemberValue.equals(""))){ 
           kiwiSaverMemberValue = "No"; 
          }else{ 
           kiwiSaverMemberValue = PAYEEmployerDetail.kiwiSaverMemberFinalValue; 
          } 
          o[i].setOrderStatus(kiwiSaverMemberValue); 
         } 

         // for KS Employee Deduction  
         if(i==6) { 
          employeeDeductionValue = PAYEEmployerDetail.employeeDeductionFinalValue; 
          if((employeeDeductionValue==null)||(employeeDeductionValue.equals(""))) { 
           employeeDeductionValue = "0%"; 
          } 
          o[i].setOrderStatus(employeeDeductionValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 
         // for KS Employee Contribution 
         if(i==7) { 
          employeeContributionValue = PAYEEmployerDetail.employeeContributionFinalValue; 
          if((employeeContributionValue==null)||(employeeContributionValue.equals(""))) { 
           employeeContributionValue = "0%"; 
          } 
          else{ 
           employeeContributionValue = employeeContributionValue+"%"; 
          } 
          o[i].setOrderStatus(employeeContributionValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 

         // for Complying Fund Member 
         if(i==8){ 
          complyingFundMemberValue = PAYEEmployerDetail.complyingFundMemberFinalValue; 
          if((complyingFundMemberValue==null)||(complyingFundMemberValue.equals(""))){ 
           complyingFundMemberValue = "No"; 
          }else{ 
           complyingFundMemberValue = PAYEEmployerDetail.complyingFundMemberFinalValue; 
          } 
          o[i].setOrderStatus(complyingFundMemberValue); 
         } 
         // for Fund Contribution 
         if(i==9){ 
          fundContributionValue = PAYEEmployerDetail.fundContributionFinalValue; 
          if((fundContributionValue==null)||(fundContributionValue.equals(""))) { 
           fundContributionValue = "$0"; 
          } 
          else{ 
           fundContributionValue = "$"+fundContributionValue; 
          } 
          o[i].setOrderStatus(fundContributionValue); 

         } 
         // for ESCT Tax Rate 
         if(i==10){ 
          ESCTTaxRateValue = PAYEEmployerDetail.ESCTTaxRateFinalValue; 
          if((ESCTTaxRateValue==null)||(ESCTTaxRateValue.equals(""))) { 
           ESCTTaxRateValue = "0%"; 
          } 
          o[i].setOrderStatus(ESCTTaxRateValue); 
         } 
         // for Child Support Deduction 
         if(i==11) { 
          childSupportDeductionValue = PAYEEmployerDetail.childSupportDeductionFinalValue; 
          if((childSupportDeductionValue==null)||(childSupportDeductionValue.equals(""))) { 
           childSupportDeductionValue = "$0"; 
          } 
          else{ 
           childSupportDeductionValue = "$"+childSupportDeductionValue; 
          } 
          o[i].setOrderStatus(childSupportDeductionValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 

         // for Payroll giving donation 
         if(i==12) { 
          payrollDonationValue = PAYEEmployerDetail.payrollDonationFinalValue; 
          if((payrollDonationValue==null)||(payrollDonationValue.equals(""))) { 
           payrollDonationValue = "$0"; 
          } 
          else{ 
           payrollDonationValue = "$"+payrollDonationValue; 
          } 
          o[i].setOrderStatus(payrollDonationValue); 
          //System.out.println("The Value is: "+o[i].getOrderStatus()); 
         } 
         m_orders.add(o[i]); 
         //lv.invalidate(); 
//      System.out.println("==> TaXCode Value: "+PAYEEmployerDetail.taxCodeFinalValue); 
//      System.out.println("==> PAyPeriod Value: "+PAYEEmployerDetail.payPeriodFinalValue); 
//      System.out.println("==> PayFrequency Value: "+PAYEEmployerDetail.payFrequencyFinalValue); 
//      System.out.println("==> Salary/Wage Value: "+PAYEEmployerDetail.salaryWageFinalValue); 
//      System.out.println("==> Gross/Net Value "+"STATIC VALUE = GROSS"); 
//      System.out.println("==> Employee Deduction Value "+PAYEEmployerDetail.employeeDeductionFinalValue); 
//      System.out.println("==> Employee Contribution Value "+PAYEEmployerDetail.employeeContributionFinalValue); 
//      System.out.println("==> Child Support Deduction Value "+PAYEEmployerDetail.childSupportDeductionFinalValue); 
//      System.out.println("==> PayRoll Donation Value "+PAYEEmployerDetail.payrollDonationFinalValue); 
//      
        } 

       Thread.sleep(100); 
       Log.i("ARRAY", ""+ m_orders.size()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
     } 
     runOnUiThread(returnRes); 
    } 




viewOrders = new Runnable(){ 
     @Override 
     public void run() { 
      getOrders(); 
     } 
    }; 

    thread = new Thread(null, viewOrders, "MagentoBackground"); 
    thread.start(); 

private Runnable returnRes = new Runnable() { 

     @Override 
     public void run() { 
      if(m_orders != null && m_orders.size() > 0){ 

       m_adapter.notifyDataSetChanged(); 
       for(int i=0;i<m_orders.size();i++) 
        m_adapter.add(m_orders.get(i)); 
      } 
      // m_ProgressDialog.dismiss(); 
      m_adapter.notifyDataSetChanged(); 
     } 
}; 

и OrderAdapter, как:

private class OrderAdapter extends ArrayAdapter<Order> { 

    private ArrayList<Order> items; 

    public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) { 
      super(context, textViewResourceId, items); 
      this.items = items; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 
       LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.paye_list_row, null); 
      } 
      Order o = items.get(position); 
      if (o != null) { 
        TextView tt = (TextView) v.findViewById(R.id.toptext); 
        TextView bt = (TextView) v.findViewById(R.id.value); 

        if (tt != null) { 
          tt.setText(o.getOrderName()); // Setting the Value here        
        } 
        if(bt != null){ 
          bt.setText(o.getOrderStatus()); // Setting the Value here 
          System.out.println("The "+o.getOrderName()+" Value is: "+o.getOrderStatus()); 

        } 
      } 
      return v; 
    } 
} 

Существует также один класс Order, где я собираюсь получить и установить значение методом getter setter.

Теперь я хочу реализовать такую ​​вещь для нескольких сотрудников. Пример: прямо сейчас для одного emplpoyee, и если uesr нажмет на кнопку добавления, тогда представьте все значение orderStatus, которое должно быть сохранено. и после этого я должен иметь возможность добавить дополнительную деталь (данные) сотрудника.

Я также хочу обратиться к следующему сотруднику, предшественнику Сотрудника, а также удалить указанного работника.

Так как это возможно с помощью HashMap? или mY-код достаточно хорош для его реализации? Пожалуйста, помогите мне в этом.

Спасибо.

ответ

1

Вместо использования только одного объекта сотрудника вы можете использовать ArrayList<Employee> и использовать его.

По мере изменения данных вы должны подумать, когда их сохранить. Можно было бы сохранить все изменения или просто сохранить, если вы измените сотрудника.

Я бы рекомендовал сохранить данные в базе данных, чтобы вы могли легко их читать и писать.

Маленький наконечник: вы должны реорганизовать if (i==1) ... на коммутатор/корпус для большей ремонтопригодности.

+0

Спасибо. Пожалуйста, помогите мне, как реализовать это для умножения сотрудника. Я имею в виду, что все данные должны храниться. так как я должен использовать эти данные в отчете. И я вообще не хочу использовать DataBase. Я знаю, что это возможно с помощью HashMap и ArrayList этого HashMap. Но я застрял, чтобы реализовать его в Моем коде. Так что мне нужна помощь для этого. –

+0

Без базы данных, как вы хотите хранить данные у своих сотрудников? Как вы хотите сохранить данные между запуском приложения? – WarrenFaith

+0

Я не хочу хранить эти данные так. Я просто хочу, чтобы это хранилище на временном лавеле, как и любая переменная. Просто для целей расчета. –