2

リストビューにデータを動的に入力しようとしています。ダイアログとして 2 番目のクラス ファイルを使用してデータを取得し、そのデータを Intent に渡します。渡されるデータは文字列の形式ですが、Listview に表示される arrayadapter のデータは Arraylist の形式です。これを解決するのを手伝ってください。

前もって感謝します。

以下のコードを添付しています

MainActivity.class

package com.example.listview;

import java.util.ArrayList;

import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.Intent;
import android.text.method.DialerKeyListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity 
{


    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView lv = (ListView) findViewById(R.id.listView1);
        final Button btn = (Button) findViewById(R.id.button1);
        final EditText input = (EditText) findViewById(R.id.editText1);

        btn.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {

//              array.add(input.getText().toString());
//              adapter.notifyDataSetChanged();
                Intent i = new Intent(MainActivity.this,adddialog.class);
                startActivity(i);

            }
        });
        ArrayList<String> array = new ArrayList<String>();
        final ArrayAdapter<String> adapter = new ArrayAdapter<String> (MainActivity.this,android.R.layout.simple_list_item_1,array); 
        lv.setAdapter(adapter);

        Intent i2 = getIntent();
        String n = i2.getStringExtra("name");
        array.add(n);
        adapter.notifyDataSetChanged();


    }






    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

追加ダイアログ

Dialog.class

package com.example.listview;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class adddialog extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adddialog);
        final EditText in = (EditText) findViewById(R.id.editText1);
        final Button btn1 = (Button) findViewById(R.id.enter);

        btn1.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View arg0) 
            {

                Intent i1 = new Intent(adddialog.this,MainActivity.class);
                i1.putExtra("name", in.getText().toString());
                startActivity(i1);
            }
        });
    }
}
4

1 に答える 1

1

活動を開始して結果を得る

Android には、アクティビティから結果を取得するという考えを既にサポートしている関数があります。これを行う方法についての説明は、「アクティビティの開始と結果の取得」というタイトルのセクションにあり ます。コードサンプルもあります。

アクティビティの終了時にアクティビティから結果を取得したい場合があります。たとえば、ユーザーが連絡先のリストから人を選択できるようにするアクティビティを開始できます。終了すると、選択された人物が返されます。これを行うには、呼び出しを識別する 2 番目の整数パラメーターを指定して startActivityForResult(Intent, int) バージョンを呼び出します。結果は onActivityResult(int, int, Intent) メソッドを通じて返されます。

アクティビティが終了すると、 setResult(int) を呼び出してデータを親に返すことができます。常に結果コードを提供する必要があります。これは、標準の結果 RESULT_CANCELED、RESULT_OK、または RESULT_FIRST_USER で始まる任意のカスタム値にすることができます。さらに、オプションで、必要な追加データを含む Intent を返すことができます。この情報はすべて、最初に提供された整数識別子とともに、親の Activity.onActivityResult() に表示されます。

概要

要約すると、 でメソッドを使用startActivityForResult(i1)して実装し、ユーザーが で入力したデータを取得する必要があります。実装は次のようになります。onActivityResult()MainActivity.javaEditTextonActivityResult()

    // Get the result of the addDialog activity.
    protected void onActivityResult(int reqCode, int resultCode, Intent data) {
        String n = data.getStringExtra("name");
        myArrayAdapter.add(n);
        myArrayAdapter.notifyDataSetChanged();
    }
于 2013-11-07T12:51:42.367 に答える