【发布时间】:2017-09-27 20:55:55
【问题描述】:
我正在尝试使用 Spinner 创建一个下拉菜单,用户可以在其中选择一个数字。然后用户点击的数字将被放入一个数组中,程序将计算数组内的总数。但它不能将所选项目添加到数组中。我浏览了很多文章;但是,我找不到解决方案。
这是我的代码:
更新:我能够找出将所选项目放入数组列表的解决方案,但我无法获得数组中总项目的结果。
public class MainActivity extends AppCompatActivity {
//Declare an array to store units
public static ArrayList<Double> unitsAdd = new ArrayList<Double>();
//Declare spinner
Spinner spinner;
//Declare adapter to connect array in string value
ArrayAdapter<CharSequence> adapter;
//
Double num1, totalUnits;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
adapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.units,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//display the adapter contain the list
spinner.setAdapter(adapter);
//delcare buttons
Button bntInsert = (Button) findViewById(R.id.bntInsert);
Button bntCount = (Button) findViewById(R.id.bntCount);
//Declare textView
final TextView resultTotalUnits = (TextView) findViewById(R.id.resultTotalUnits);
//Insert function
bntInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*Removed This line of codes
spinner.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> list, View view, int position, long id) {
//define selected unit. I am missing something right here
String unitSelected = spinner.getSelectedItem().toString();
//convert string to double
num1 = Double.parseDouble(unitSelected);
//add to array but it does not work
unitsAdd.add(num1);
Toast.makeText(getApplicationContext(),
"You have inserted: " + num1 + " units",
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});*/
//Added these
String unitSelected = spinner.getSelectedItem().toString();
num1 = Double.parseDouble(unitSelected);
unitsAdd.add(num1);
Toast.makeText(getApplicationContext(),
"You have inserted: " + unitsAdd + " units",
Toast.LENGTH_SHORT).show();
}
});
//When clicking the button, the app stopped working
bntCount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i<unitsAdd.size();i++){
//sum of the array called units
totalUnits = (unitsAdd.get(i)) + totalUnits;
}
//Display the results in the TextView sections
resultTotalUnits.setText("Total units :"+Double.toString(totalUnits));
}
});
}
}
【问题讨论】:
-
您到底在哪里遇到问题?
-
无法将选中的项目(用户点击插入按钮时选择的项目)添加到数组中。
-
试试
String unitSelected = list.getItemAtPosition(position).toString() -
对不起,我试过了。 Tt 不工作。谢谢。
-
好吧,我建议你先看一行。首先,确保 unitSelected 得到正确的字符串值,然后如果它被正确解析,等等......
标签: java android arrays spinner