我有 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*
点击删除按钮后:ListView 刷新,位置=1 的项目被删除。但是在GoruntuleActivity的Screen上并没有删除。
最佳答案
看起来你涉及的列表太多了。我认为您应该能够像这样从主列表中删除该项目:
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/