【发布时间】:2026-02-15 16:05:02
【问题描述】:
我的代码流程有问题。请大家帮忙:(
好的,流程是这样的。第一个活动加载recyclerview,它存储ArrayListdata。 Arraylist 的数据包含有关 Premise 的信息,它从网站的 API 检索。它使用GET 方法。
好的,接下来当我从recyclerview 中选择一个项目时,它会将我带到next Activity,我将输入integer。然后,当它返回到first Activity 时,它传递integer 值和recyclerview 项的index。 recyclerview 使用 index 更新项目并将 integer 值存储在项目中。
所以,我的问题是:当我重复从recyclerview 中选择一个项目并输入一个整数的过程时,第一个活动只存储最新数据。上一个项目不见了。
我到底哪里做错了?我是移动应用程序开发的新手。请帮忙。我真是一头雾水。
这是第一个活动。它被称为 MainActivity:
public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<ArrayList<Premise>> {
private NotificationManagerCompat notificationManager;
private LoaderManager loaderManager;
private RecyclerView rcvPremises;
private EditText premiseSearch;
String pTrackVisitor_s, pPosition_s, pPremiseName, pLocation;
int pTrackVisitor, pPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loaderManager = LoaderManager.getInstance(this);
premiseSearch = findViewById(R.id.search);
rcvPremises = findViewById(R.id.rcvPremise);
Intent mainIntent = getIntent();
pTrackVisitor_s = mainIntent.getStringExtra("trackVisitor");
pPosition_s = mainIntent.getStringExtra("position");
if (pTrackVisitor_s != null) {
pTrackVisitor = Integer.parseInt(pTrackVisitor_s);
pPosition = Integer.parseInt(pPosition_s);
} else {
pTrackVisitor = 0;
pPosition = 0;
}
}
@NonNull
@Override
public Loader<ArrayList<Premise>> onCreateLoader(int id, @Nullable Bundle args) {
return new PremisesListTaskLoader(this, pTrackVisitor, pPosition);
}
@Override
public void onLoadFinished(@NonNull Loader<ArrayList<Premise>> loader, ArrayList<Premise> vPremise) {
loaderManager.destroyLoader(0);
if (!vPremise.isEmpty()) {
rcvPremises.setAdapter(new PremiseAdapter(this, vPremise));
rcvPremises.setLayoutManager(new LinearLayoutManager(this));
premiseSearchBar(premiseSearch, vPremise);
} else
Toast.makeText(this, "Unable to load data from iiotisme.com", Toast.LENGTH_LONG).show();
}
@Override
public void onLoaderReset(@NonNull Loader<ArrayList<Premise>> loader) {
}
}
如果您需要更多编码部分,请告诉我。我会分享它们。
【问题讨论】:
标签: android arraylist android-recyclerview asynctaskloader