从另一个活动刷新列表

3

我有三个活动和一个类;

MobilEpostaActivity(主活动)从 Gmail 服务器获取数据,将这些数据传递给ListeleActivity(填充和显示 ListView),ListeleActivity会将这些数据填充到 ListView 中,当单击 ListView 上的项目时,项目的单击数据会被传递到GoruntuleActivity(显示单击项的信息)。另外,我还有一个名为“Baglantı”(意为连接)的类,它具有所有其他必需的方法。

我的问题出在这里:当用户点击“删除”按钮时,我想刷新 ListView 并向用户显示下一封邮件。当用户单击删除按钮时,我可以通过将位置加1并显示该位置的邮件来向用户显示下一封邮件。但是,由于其附件比较复杂,所以无法正常工作。

现在从MobilEpostaActivity开始;我从用户那里获取用户名和密码,并将它们传递给 Baglantı 类以连接服务器。然后,我得到结果正文、发件人和主题的数组列表。然后,我通过意图将这些正文、发件人和主题传递到 ListeleActivity。

public void epostaListeleme() throws MessagingException, IOException 
    {
        final Intent intent = new Intent(this, ListeleActivity.class);
        intent.putStringArrayListExtra(bodylistesi ,(ArrayList<String>) getBodyList());
        intent.putStringArrayListExtra(konulistesi ,(ArrayList<String>) getKonuList());
        intent.putStringArrayListExtra(kimdenlistesi ,(ArrayList<String>) getKimdenList());
        startActivity(intent);
        }

在ListeleActivity()中:
通过Bundle从MobilEpostaActivity获取数据,使用“from”数据填充listview。并等待listItemOnClick事件。如果发生Onclick Action,则将数据传递给GoruntuleActivity。
在GoruntuleActivity()中:
通过Bundle从ListeleActivity获取数据。并(这是重要的一部分)等待删除按钮OnClick事件。如果On Onclick Action发生且为优先级第一,则从ListView中删除此位置。
arrayAdapter.remove(arrayAdapter.getItem(position));
listBaglanti.RefreshedPositions(position);
arrayAdapter.notifyDataSetChanged();

第二步) 从bodylist、fromlist和subjectlist中删除位置数据:

public void RefreshedPositions(int position) 
{
    list.remove(list.get(position));
    kimdenlist.remove(kimdenlist.get(position));
    konulist.remove(konulist.get(position));
}

第三步) 将这些“已更改”的列表保存在ArrayList中:

bodylistRefresh = baglan.list;
kimdenlisteRefresh = baglan.kimdenlist;
konulisteRefresh = baglan.konulist; 

第四步) 将这些“已更改”列表设置为MobilEpostaActivity的意图(即ListeleAcitivity的意图):

MobilEpostaActivity mobilObject = new MobilEpostaActivity();
mobilObject.setKonuList(konulisteRefresh);
mobilObject.setKimdenList(kimdenlisteRefresh);
mobilObject.setBodyList(bodylistRefresh);

你认为这个流程应该重新开始,但它没有重新开始,因为在第四步中,我没有对ListView进行刷新。

也许我选择了一种比较困难的方式。但我希望你能告诉我如何正确地刷新listview并显示下一封邮件。以下是我的截图:

当我首次打开应用程序时:有3封来自Merve的邮件。位置:0,1,2*

enter image description here

点击删除按钮后:ListView被刷新,位置=1的项目被删除。但它在GoruntuleActivity屏幕上没有被删除。

enter image description here

1个回答

1

看起来你涉及了太多的列表。我认为你应该只需从主列表中删除该项,就可以解决问题:

arrayAdapter.remove(position);
listBaglanti.RefreshedPositions(position);
arrayAdapter.notifyDataSetChanged();

public void RefreshedPositions(int position) 
{
    list.remove(position);
    kimdenlist.remove(position);
    konulist.remove(position);
}

只需将位置作为 int 值传递,而不是检索然后删除对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接