0

私は自分のプロジェクトで次のことを実装したいと考えています。アクティビティAから結果のためにアクティビティBを開始したい。アクティビティ A には、リストビュー (mylistview など) とそのためのアダプター セットがあります。(myadapter と言います)。および対応する配列リスト myarraylist.

アクティビティ B の結果文字列を使用して、その文字列をアクティビティ A の既存のリストビューに追加したいと考えています。

私は次のことをしました:

アクティビティ A:

ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1,myarraylist);
mylistview.setListAdapter(myadapter);

Intent i = new Intent(this, activityB.class);
startAcivityForResult(i,1);

今私の onActivityResult メソッドで:

String new_str = data.getStringExtra();
myarraylist.add(new_str);
myadapter.notifyDatasetChanged();

アクティビティ B:

Intent i =new Intent();
i.putExtra("card_name", Card_name);
setResult(RESULT_OK,i);

私のプログラムはエラーを表示せず、正常に動作します。それでも私のリストビューは正しく更新されません。

どこが間違っていますか?

4

1 に答える 1

0

何が問題なのかをデバッグする必要があると思います。文字列が正しく読み取られていないか、文字列がリストビューに到達していません。

String が読み取られない場合は、代わりにインテントで送信してみてください。リストビューではなく配列に追加されている場合は、配列から直接読み取るようにアダプターを更新しようとします。

そのようです:

    public class CustomStringAdapter extends ArrayAdapter<String> {

    public CustomStringAdapter(Context context, int textViewResourceId,
            List<String> objects) {
        super(context, textViewResourceId, objects);
    }
    @Override
    public int getCount() {
        return myarraylist.size();
    }

    @Override
    public String getItem(int position) {
        // TODO Auto-generated method stub
        return myarraylist.get(position);
    }

}

そして、代わりにそれをアダプターとして設定します。

CustomStringAdapter myadapter = new CustomStringAdapter(this,android.r.layout.simple_list_item_1,myarraylist);
mylistview.setListAdapter(myadapter);

これは答えではないかもしれませんが、テストする価値はあります。

于 2013-03-03T07:35:27.583 に答える