我有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 *
单击“删除”按钮后:ListView将刷新,并且位置= 1的项目将被删除。但是在GoruntuleActivity的屏幕上没有删除它。
答案 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值传递,而不是检索然后删除对象。