我有一个带有4个值的微调器
String[] petak = { "Petak 1", "Petak 2", "Petak 3", "Petak 4" };
首先我选择值“Petak 1”
然后我选择“foto dan save”到下一步
,现在的值是
因为之前已经选择了值“Petak 1”,所以值“Petak 1”消失了。
现在我再次选择“foto dan save”
,值为
因为之前已经选择了值“Petak 1”和“Petak 2”,所以值“Petak 1”和“Petak 2”消失了。
问题是当我选择值随机时如何操纵值微调器,例如:我选择“Petak 2”首先?因此值显示为“Petak 1”,“Petak 3”,“Petak 4”
这是我的代码
View spinner1 = (Spinner) findViewById(R.id.namapetak);
String spinnerPetak=((Spinner) spinner1).getSelectedItem().toString();
if (spinnerPetak == "Petak 1"){
String[] petak1 = { "Petak 2", "Petak 3", "Petak 4" };
// buat spinner manual manufaktur
Spinner spin3 = (Spinner) findViewById(R.id.namapetak);
//spin3.setOnItemSelectedListener(this);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, petak1);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin3.setAdapter(aa);
//update = (Button) findViewById(R.id.update);
spin3 = (Spinner) findViewById(R.id.namapetak);
spin3.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
//Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
View b = findViewById(R.id.btnPupukQuit);
b.setVisibility(View.GONE);
onBackPressed();
onAttachedToWindow();
}
if (spinnerPetak == "Petak 2"){
String[] petak1 = { "Petak 3", "Petak 4" };
// buat spinner manual manufaktur
Spinner spin3 = (Spinner) findViewById(R.id.namapetak);
//spin3.setOnItemSelectedListener(this);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, petak1);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin3.setAdapter(aa);
//update = (Button) findViewById(R.id.update);
spin3 = (Spinner) findViewById(R.id.namapetak);
spin3.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
//Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
View b = findViewById(R.id.btnPupukQuit);
b.setVisibility(View.GONE);
onBackPressed();
onAttachedToWindow();
}
if (spinnerPetak == "Petak 3"){
String[] petak1 = { "Petak 4" };
// buat spinner manual manufaktur
Spinner spin3 = (Spinner) findViewById(R.id.namapetak);
//spin3.setOnItemSelectedListener(this);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, petak1);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin3.setAdapter(aa);
//update = (Button) findViewById(R.id.update);
spin3 = (Spinner) findViewById(R.id.namapetak);
spin3.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
//Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
View b = findViewById(R.id.btnPupukQuit);
b.setVisibility(View.GONE);
onBackPressed();
onAttachedToWindow();
}
有人帮助我吗?
修改
这个代码工作时,我把它放在按钮onClick“Foto dan Save”,但是当我放到onActivityResult时,行switch (v.getId())
可以switch
添加onActivityResult时出错?
String myData = toList.getSelectedItem().toString();
int position = dataAdapter.getPosition(myData);
switch (View.getId()) {
case R.id.btnPetakFoto:
if(position >= 0){
dataAdapter.remove(myData);
dataAdapter.notifyDataSetChanged();
}
else {
Toast.makeText(getBaseContext(), myData + " not in Spinner", Toast.LENGTH_LONG).show();
}
break;
// More buttons go here (if any) ...
}
View b = findViewById(R.id.btnPupukQuit);
b.setVisibility(View.GONE);
onBackPressed();
onAttachedToWindow();
答案 0 :(得分:2)
使用ArrayList解决您的问题,您还应该考虑使用switch而不是一堆if。
祝你好运
答案 1 :(得分:1)
是的,您要做的是使用ArrayList
来保存基础数据,然后在单击 Foto dan Save 按钮时更新此数据。
如何执行此操作的一个小示例如下:
public class MainActivity extends Activity {
ArrayAdapter<String> spinnerAdapter;
Spinner spinner1;
ArrayList<String> petak;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
petak = new ArrayList<String>();
petak.add("Petak 1");
petak.add("Petak 2");
petak.add("Petak 3");
petak.add("Petak 4");
spinner1 = (Spinner) findViewById(R.id.spn_petak);
spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, petak);
spinner1.setAdapter(spinnerAdapter);
Button foto = (Button)findViewById(R.id.foto);
foto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
petak.remove(spinner1.getSelectedItem().toString());
spinnerAdapter.notifyDataSetChanged();
}
});
}
这是一个独立的代码,因此您可以将其复制到一个新项目中,它将按预期工作,或者您可以获取重要部分并将其应用于您的代码。
基本上我们正在做的是创建一个新的ArrayList
并将四个 Petak 值添加到其中。然后,我们会创建一个新的SpinnerAdapter
,并将其作为参考提供给您ArrayList
。
当用户点击 foto 按钮时,我们会从基础String
中删除所选项ArrayList
,然后在{{1}上调用notifyDataSetChanged
为了更新显示的项目列表。