【发布时间】:2019-09-03 15:06:49
【问题描述】:
问题总结:适配器和微调器都在微调器Activity中。一旦用户选择了一个名称,它就会将它们发送到主活动。我想从另一个活动中调用一个 ArrayAdapter 并从该列表中删除一个项目,但似乎无法弄清楚如何这样做。我使用 ArrayAdapter 并从strings.xml 附加一个列表并使用string-array name="horizon_names"
Call custom ArrayAdapter method from another Activity 没有回答我的问题。
我尝试过的:我尝试过公开ArrayAdapter 并尝试在其他活动中调用它,但没有任何反应。
微调器选择活动:
public class SpinnerSelection extends AppCompatActivity implements
AdapterView.OnItemSelectedListener {
Spinner spinner;
TextView tvPackage;
String stringSelectionPackage;
Button bSaveSelection;
Context context;
public ArrayAdapter<CharSequence> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner_selection);
context = this;
//---------------------------------------------------
// Name Selection (1-24)
spinner = findViewById(R.id.spinner);
tvPackage= findViewById(R.id.tvPackage);
//Array Adapter for creating list
adapter = ArrayAdapter.createFromResource(this, R.array.names,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
//Save Selection Button Code
bSaveSelection = findViewById(R.id.bSaveSelection);
bSaveSelection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(),
MainActivity.class);
stringSelectionPackage=
tvPackage.getText().toString();
myIntent.putExtra("name", stringSelectionPackage);
startActivity(myIntent);
finish();
}
});
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i,
long l) {
//Put user selection into String text
String text = adapterView.getItemAtPosition(i).toString();
//Store text in tvPackage to send it to MainActivity and
place in @id/textViewName TextView
tvPackage.setText(text);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
主要活动:
Within onCreate
//GETTING NAME FROM SPINNER SELECTION
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("name");
textViewName.setText(value);
**THIS IS WHERE I WANT TO DELETE ITEM FROM LIST**
adapter.remove(value);
}
strings.xml
<string-array name="names">
<item>Name 01</item>
<item>Name 02</item>
<item>Name 03</item>
<item>Name 04</item>
<item>Name 05</item>
</string-array>
预期和实际结果 我希望能够从其他活动中调用 ArrayAdapter,并删除用户在主要活动中选择的项目,但我无法在其中调用 ArrayAdapter MainActivity。
【问题讨论】:
-
Within onCreate- 我认为这是你的问题。onCreate仅在需要创建Activity时调用。如果您开始第二个Activity,第一个将在您finish()之后进入onPause,而您的第二个Activity第一个Activity将通过调用onResume恢复,所以我会将代码移到这里而不是@987654337 @ -
我会澄清的;名称选择屏幕首先显示,在用户选择名称后,他们将被发送到我要从用户选择的列表中删除名称的主要活动。
-
您的
adapter在SpinnerSelection中,而不在MainActivity中,对吗? -
正确。适配器和微调器都在 Spinner Activity 中。一旦用户选择了一个名称,它就会将它们发送到 Main Activity。
标签: java android android-studio android-arrayadapter