活动仅在重新加载应用程序后加载首次按下索引的数据

时间:2018-04-08 16:49:53

标签: java android

我使用listView创建了Activity,它使用setOnItemClickListener来确定已按下哪个索引。然后它应该根据所选索引将数据传递到下一个活动。

传递值有效,但它仅适用于重新加载应用后按下的第一个listView索引。

使其更清晰。当应用程序加载时,我可以按下ListView的任何索引,它将数据传递给下一个Activity并正确显示,但是当我返回ListView并选择不同的索引时,它仍然显示来自之前的相同数据索引没有更新它。因此,我必须重新加载应用程序才能显示新的索引结果。

这是我的ViewListActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_artist);

    artistList = (ListView) findViewById(R.id.artistList);
    databasehandler = new SqliteHandler(ViewArtistActivity.this);
    allArtists = databasehandler.getAllArtists();
    artistName = new ArrayList<>();
    singleArtistDetails = new ArrayList<>();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    if (allArtists.size() > 0) {

        for (int i=0; i < allArtists.size(); i++) {

            ArtistModel artistModel = allArtists.get(i);
            artistName.add(artistModel.getArtistName());
        }
    }

    adapter = new ArrayAdapter(ViewArtistActivity.this, android.R.layout.simple_list_item_1, artistName);
    artistList.setAdapter(adapter);

    artistList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            ArtistModel artistModel = allArtists.get(position);
            singleArtistDetails.add(artistModel.getArtistName());
            singleArtistDetails.add(artistModel.getArtistDOB());
            singleArtistDetails.add(artistModel.getArtistBiography());

            Intent intent = new Intent(ViewArtistActivity.this, SavedArtistDetailsActivity.class);
            intent.putExtra("NAME", singleArtistDetails.get(0));
            intent.putExtra("DOB", singleArtistDetails.get(1));
            intent.putExtra("BIOGRAPHY", singleArtistDetails.get(2));
            startActivity(intent);

        }
    });
}

以下是我显示所选索引结果的代码活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_saved_artist_details);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    artistSavedNameLbl2 = (TextView) findViewById(R.id.artistSavedNameLbl2);
    artistSavedDOBLbl2 = (TextView) findViewById(R.id.artistSavedDOBLbl2);
    artistSavedBiographyLbl2 = (TextView) findViewById(R.id.artistSavedBiographyLbl2);
    btnDeleteDetails = (Button) findViewById(R.id.btnDeleteDetails);

    updateUI();
}

private void updateUI() {

    artistSavedNameLbl2.setText(getIntent().getStringExtra("NAME"));
    artistSavedDOBLbl2.setText(getIntent().getStringExtra("DOB"));
    artistSavedBiographyLbl2.setText(getIntent().getStringExtra("BIOGRAPHY"));

}

1 个答案:

答案 0 :(得分:1)

做一件事,在向其添加任何值之前,在onClick方法中初始化[不说声明]你的数组列表singleArtistDetails。

喜欢

singleArtistDetails = new ArrayList();

希望这会有所帮助。