我有一个代码,我最初使用自定义适配器使用字符串数组填充listview。我想相应地更新字符串数组中的字段,因此更新listview,有没有办法编辑字符串数组?问题是我的字符串数组不只是一个字符串,它包含一个int字段,我根据用户更新。
import android.app.ActionBar;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.NumberPicker;
import android.widget.Toast;
import android.widget.Toolbar;
public class CashRegisterActivity extends Activity {
NumberPicker numberPicker;
EditText magnitude;
ListView cashRegisterListview;
int a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;
String[] list= {"1000 x " + a0, "500 x " + a1, "100 x " + a2, "50 x " + a3, "20 x " + a4,
"10 x " + a5, "5 x " + a6, "2 x " + a7, "1 x " + a8, "0.5 x " + a9};
CustomCashlistAdapter customCashlistAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cash_register);
Toolbar tb = (Toolbar)findViewById(R.id.tool_bar);
setActionBar(tb);
cashRegisterListview = (ListView)findViewById(R.id.cashRegisterListview);
magnitude=(EditText)findViewById(R.id.magnitude);
numberPicker = (NumberPicker)findViewById(R.id.numberPicker);
numberPicker.setDisplayedValues(getResources().getStringArray(R.array.inr_picker_display));
numberPicker.setEnabled(true);
numberPicker.setMaxValue(getResources().getStringArray(R.array.inr_picker_display).length - 1);
numberPicker.setMinValue(0);
customCashlistAdapter = new CustomCashlistAdapter(this,list);
cashRegisterListview.setAdapter(customCashlistAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle("Cash Register");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
else if (id == android.R.id.home){
finish();
}
return super.onOptionsItemSelected(item);
}
//Add Selection
public void addSelection(View view){
double currentSelection = 0;
int currentMagnitude = Integer.parseInt(magnitude.getText().toString());
switch (numberPicker.getValue()){
case 0:
currentSelection=1000;a0=currentMagnitude;Toast.makeText(this,""+a0,Toast.LENGTH_SHORT).show();
break;
case 1:
currentSelection=500;a1=currentMagnitude;
break;
case 2:
currentSelection=100;a2=currentMagnitude;
break;
case 3:
currentSelection=50;a3=currentMagnitude;
break;
case 4:
currentSelection=20;a4=currentMagnitude;
break;
case 5:
currentSelection=10;a5=currentMagnitude;
break;
case 6:
currentSelection=5;a6=currentMagnitude;
break;
case 7:
currentSelection=2;a7=currentMagnitude;
break;
case 8:
currentSelection=1;a8=currentMagnitude;
break;
case 9:
currentSelection=0.5;a9=currentMagnitude;
break;
}
customCashlistAdapter.notifyDataSetChanged();
}
}
PS:我不知道为什么人们如果无能为力就会投票。并不是每个人都是Dennis Ritchie。
答案 0 :(得分:1)
你可以借助第二个清单来做到这一点:
String[] helperlist = {"1000 x ", "500 x ", "100 x ", "50 x ", "20 x ", "10 x ", "5 x ", "2 x ", "1 x ", "0.5 x "};
list[x] = helperlist[x] + ax;
其中" ax"是你改变的价值和" x"是您列表中该值的位置。
答案 1 :(得分:0)
考虑使用更复杂的集合类,如ArrayList
,您可以通过单个调用添加,删除,修剪和许多其他内容。