2016-03-05 49 views
-2

我有一個基礎適配器,我在其中放置了一些來自數據庫的值。我計算一些值,並將其存儲到textView。 因此,如果列表中的我的BaseAdapter有例如14項,我想獲得所有這些計算出的值並將它們相加,並在listView之前顯示它們。 我創建了一些代碼,但我認爲我做錯了。 什麼是最好的解決方案。 這是我的代碼,一切都在發生。BaseAdapter從textView中獲取值並對其進行求和

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.display_logs_listview); 
     boolean sort = getIntent().getBooleanExtra("sort", false); 
     mainListView = (ListView) findViewById(R.id.ListViewItem); 
     final String place = (String) getIntent().getExtras().get("keyPlace"); 
     dbHandler = new LogsDBHandler(this); 
     ArrayList<Logs> logsList = sort ? dbHandler.getAllLogsByPlace() : dbHandler.getAllLogs(place); 
     listAdapter = new LogsArrayAdapter(logsList); 
     mainListView.setAdapter(listAdapter); 

     //HERE I TRIED TO GET ALL VALUES FORM TEXTVIEW AND SUM THEM 
     for(int i=0; i<listAdapter.getCount(); i++) { 
      View v = listAdapter.getView(i, null, null); 
      TextView result = (TextView) v.findViewById(R.id.LogMassResult); 
      double sum = result + Integer.parseInt(final_result.getText().toString()); 
      String final_sum = String.format("%.2f", sum); 
      result.setText(final_sum); 
     } 
    } 

private class LogsArrayAdapter extends BaseAdapter { 
    private LayoutInflater inflater; 
    private List<Logs> logsList; 

    public LogsArrayAdapter(List<Logs> logsList) { 
     inflater = LayoutInflater.from(DisplayLogs.this); 
     this.logsList = logsList; 
    } 
    @Override 
    public int getCount() { 
     return logsList.size(); 
    } 
    @Override 
    public Object getItem(int position) { 
     return logsList.get(position); 
    } 
    @Override 
    public long getItemId(int position) { 
     return logsList.get(position).getId(); 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.activity_display_logs, parent, false); 
     } 
     Logs log = logsList.get(position); 
     ((TextView) convertView.findViewById(R.id.textDiameter)).setText(log.getDiameter()); 
     ((TextView) convertView.findViewById(R.id.textLength)).setText(log.getLength()); 
     double log_length, log_diameter, length, diameter, result; 
     log_length = Integer.parseInt(log.getLength().toString()); 
     log_diameter = Integer.parseInt(log.getDiameter().toString()); 
     length = log_length/100; 
     diameter = log_diameter * log_diameter * 3.14159265; 
     result = length * diameter/40000; 
     String final_result = String.format("%.2f", result); 
     //FROM BELOW TEXTVIEW I WANT GET VALUES AND SUM THEM 
     ((TextView) convertView.findViewById(R.id.textAmount)).setText(final_result);    
     return convertView; 
    } 
} 
+0

沒有for循環需要額外你可以在你的getView方法,當你將文本textview –

+0

你有數據源,你可以使用它 –

+0

但我需要它在列表視圖的前面。我有2-3個變量要先顯示,然後這個getView方法去。 – RubyDigger19

回答

1

爲什麼不將計算「結果」的邏輯移動到Logs類?

然後,你可以這樣設置的TextView:((TextView)convertView.findViewById(R.id.textAmount)).setText(log.getResult());

總:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.display_logs_listview); 
    boolean sort = getIntent().getBooleanExtra("sort", false); 
    mainListView = (ListView) findViewById(R.id.ListViewItem); 
    final String place = (String) getIntent().getExtras().get("keyPlace"); 
    dbHandler = new LogsDBHandler(this); 
    ArrayList<Logs> logsList = sort ? dbHandler.getAllLogsByPlace() : dbHandler.getAllLogs(place); 

    TextView result = (TextView) v.findViewById(R.id.LogMassResult); 
    double sum = 0.0; 
    for(int i=0; i<logs.size(); i++) { 
     sum += logs.get(i).getResult(); 
    } 
    result.setText(String.format("%.2f", sum)); 

    listAdapter = new LogsArrayAdapter(logsList); 
    mainListView.setAdapter(listAdapter); 
} 
+0

我不確定這會做我所需要的(也許我錯了)。 我需要在列表視圖之前顯示結果的總和。 – RubyDigger19

+0

你是什麼意思「之前listview」? – j3susalonso

+0

我更新了截圖,我需要如何做到這一點。 您會在屏幕頂部看到listView中的項數,下面是log_masses的總和。 然後在下面是與物品的列表視圖,並且每個物品都有質量。 如果可能,我需要總結所有項目質量並將它們顯示在屏幕頂部 – RubyDigger19

相關問題