我有一個基礎適配器,我在其中放置了一些來自數據庫的值。我計算一些值,並將其存儲到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;
}
}
沒有for循環需要額外你可以在你的getView方法,當你將文本textview –
你有數據源,你可以使用它 –
但我需要它在列表視圖的前面。我有2-3個變量要先顯示,然後這個getView方法去。 – RubyDigger19