android - 从另一个 Activity 刷新列表

标签 android listview arraylist jakarta-mail

我有 3 个 Activity 和 1 个类(class);

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

我的问题出在这里:当用户点击“删除”按钮时。我想刷新 ListView 并向用户显示下一封邮件。当用户单击删除按钮时,我可以向用户显示下一封邮件,并在该位置添加 1 并显示它。但它不能正常工作,因为它的附件很复杂。

现在从 MobilEpostaActivity 开始;我从用户那里获取用户名和密码,并将它们传递给 Baglantı 类以连接到服务器。然后我从数组列表中的主题获取结果主体。然后我将这些主体从 ListeleActivity 传递给 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 获取数据。用“来自”数据填充 ListView 。并等待 listItemOnClick。如果发生 Onclick Action ,则将数据传递给 GoruntuleActivity。**

在 GoruntuleActivity() 中:

使用 Bundle 从 ListeleActivity 获取数据。并且(这是重要的部分)等待删除按钮 OnClick。如果首先发生 On Onclick 操作)从 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));
}

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

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

第四)将这些“更改的”列表设置为 MobilEpostaActivity 的 Intent (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的Screen上并没有删除。

enter image description here

最佳答案

看起来你涉及的列表太多了。我认为您应该能够像这样从主列表中删除该项目:

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

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

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

关于android - 从另一个 Activity 刷新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10404669/

相关文章:

android - 如何访问android中的 Assets ?

java.lang.UnsatisfiedLinkError : No implementation found (When Implement a SDK)

android - 如何在 android 中制作类似 google io 2014 应用程序的 ListView ?

c# - 如何更改 ListView 标题的前景色? C# 窗体应用程序

java - 按映射中的特定键对 List<Map<String, Object>> 进行排序

java - 从 ArrayList 更改为 Vector

android - 无法在 Jitpack 上发布库

android - 当通过电子邮件从 Assets 发送图像时,邮件 View 显示 0kb 大小的图像?

android - 仅从android中的数据库获取最后一个值

c# - ArrayList 有什么不好?