3

私には3つのアクティビティと1つのクラスがあります。

MobilEpostaActivity(メインアクティビティ)は、GmailサーバーからのデータをListeleActivityにインテントし(ListViewに入力して表示)、ListeleActivityはこれらのデータをListViewに入力し、アイテムがListViewをクリックすると、アイテムのクリックデータはGoruntuleActivityにインテントします(表示onclickアイテムの情報)。また、クラス「Baglantı」(接続を意味する)があり、それぞれに必要な他のすべてのメソッドがあります。

私の問題はここにあります:ユーザーが「削除」ボタンをクリックしたとき。リストビューを更新して、次のメールをユーザーに表示したいと思います。ユーザーが削除ボタンをクリックすると、位置に1を追加してユーザーに次のメールを表示できます。ただし、アタッチメントが複雑なため、正しく動作しません。

ここで、MobilEpostaActivityから始めます。ユーザーからユーザー名とパスワードを取得し、サーバーに接続するためにそれらをBaglantıクラスに渡します。次に、arraylistsのsubjectから結果の本文を取得します。次に、これらのボディを、意図的に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()の場合:

MobilEpostaActivitywithBundleからデータを取得します。リストビューに「from」データを入力します。そしてlistItemOnClickを待っています。Onclickアクションが発生した場合は、データをGoruntuleActivityに渡します。**

GoruntuleActivity()の場合:

ListeleActivitywithBundleからデータを取得します。そして(ここが重要な部分です)削除ボタンOnClickを待っています。オンクリックアクションが最初に発生した場合)リストビューから位置を削除します。

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

2番目)ボディリスト、フロムリスト、サブジェクトリストからポジションのデータを削除します。

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

3番目)これらの「変更された」リストを配列リストに保持します。

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

4番目)これらの「変更された」リストをMobilEpostaActivityのインテント(ListeleAcitivityのインテントの1つ)に設定します。

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

あなたが思うように、プロセスは最初からやり直す必要があります。しかし、4番目のステップでは、私はそうは思わないので、ListViewを更新したため、開始されません。

たぶん私は難しい道を進んだ。しかし、リストビューを更新して次のメールを表示するための正しいことを教えていただければ幸いです。また、私のスクリーンショット。

私が最初にアプリケーションを開いたとき:Merveから3通のメールがあります。ポジション: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 に答える