从另一个活动刷新列表

时间:2012-05-01 21:31:57

标签: android listview arraylist javamail

我有3个活动和1个班级;

MobilEpostaActivity (主要活动)从Gmail服务器将这些数据的数据提供给 ListeleActivity (填充并显示ListView),ListeleActivity将这些数据填充到ListView和当项目onClick on ListView时,项目的点击数据意图 GoruntuleActivity (显示onclick项目的信息)。我还有一个班级“Baglantı”(意思是连接),它还有其他所有必需的方法。

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

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

在GoruntuleActivity()中:

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

THIRD)在arraylists中保留这些“已更改”列表:

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

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

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

您认为这个过程应该重新开始。但它没有开始因为第四步,我不这么认为我为ListView做了一个刷新。

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

当我第一次打开申请时:Merve有3封邮件。职位:0,1,2 *

enter image description here

单击“删除”按钮后:ListView将刷新,并且位置= 1的项目将被删除。但是在GoruntuleActivity的屏幕上没有删除它。

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来您涉及的列表太多了。我认为您应该能够从主列表中删除项目,如下所示:

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

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

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