3

我有 3 项活动和 1 节课;

MobilEpostaActivity(主活动)将来自 Gmail 服务器意图的数据提供给ListeleActivity(填充并显示 ListView),ListeleActivity 将这些数据填充到 ListView,当项目 onClick ListView 时,项目的点击数据意图传递给GoruntuleActivity(显示onclick 项目的信息)。而且我还有一个类“ Baglantı ”(表示连接),它具有每个所需的所有其他方法。

我的问题在这里:当用户单击“删除”按钮时。我想刷新列表视图并向用户显示下一封邮件。当用户单击删除按钮时,我可以向用户显示下一封邮件并在该位置添加 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 获取数据。用“来自”数据填充列表视图。并等待 listItemOnClick。如果发生 Onclick 操作,则将数据传递给 GoruntuleActivity。**

在 GoruntuleActivity() 中:

使用 Bundle 从 ListeleActivity 获取数据。并且(这里是重要部分)等待删除按钮 OnClick。如果首先发生 Onclick 操作)从 ListView 中删除该位置。

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

SECOND) 从 bodylist 、 fromlist 和 subjectlist 中删除职位数据:

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

第三)将这些“更改”列表保存在数组列表中:

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 进行了刷新。

也许我走了一条很难的路。但我希望,你告诉我刷新列表视图并显示下一封邮件的正确方法。还有我的截图;

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

在此处输入图像描述

单击删除按钮后:刷新 ListView 并删除 position=1 的项目。但它不会在 GoruntuleActivity 的屏幕上被删除。

在此处输入图像描述

4

1 回答 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 值传递,而不是检索然后删除对象。

于 2012-09-21T01:13:51.407 回答