0

MYSQL データベースからデータを返し、結果をリストビューに表示するアプリケーションを開発しています。これは、名前、住所、および番号で構成されます。リストビュー内のアイテムが選択されたときに、クリックしたアイテム リストの詳細を表示する別のページを開きたい。どうすればよいでしょうか?onListItemClick メソッドを使用する必要があることはわかっていますが、クリックしたリスト内のアイテムからの情報をロードするページ テンプレートを作成するにはどうすればよいでしょうか? ありがとう

データベースに接続してクエリを実行し、結果をリストビューに表示するために使用するコードは次のとおりです。

public class HttpExample extends ListActivity {

TextView httpStuff;
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.httpex);
    setContentView(R.layout.listplaceholder);
    httpStuff = (TextView) findViewById(R.id.tvHttp);

    GetMethodEx test = new GetMethodEx();
    String returned;
    try {
        returned = test.getInternetData();
        httpStuff.setText(returned);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    ListAdapter adapter = new SimpleAdapter(this, mylist, R.layout.main,
            new String[] { "name", "address", "number" }, new int[] {
                    R.id.item_title, R.id.item_subtitle, R.id.item_number });

    setListAdapter(adapter);

}

public class GetMethodEx {

    public String getInternetData() throws Exception {

        BufferedReader in = null;
        String data = "";
        String returnString = "";

        // httpGet

        try {

            HttpClient client = new DefaultHttpClient();
            URI website = new URI("http://192.168.0.10/connect.php");
            HttpGet request = new HttpGet();
            request.setURI(website);
            HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response
                    .getEntity().getContent()));
            StringBuffer sb = new StringBuffer("");
            String l = "";
            String nl = System.getProperty("line.separator");

            while ((l = in.readLine()) != null) {
                sb.append(l + nl);
            }
            in.close();
            data = sb.toString();
            // return data;
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }
        // parse json data
        try {
            JSONArray jArray = new JSONArray(data);
            for (int i = 0; i < jArray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject json_data = jArray.getJSONObject(i);

                map.put("id", String.valueOf(i));
                map.put("name",
                        "ShopName:" + json_data.getString("shopname"));
                map.put("address",
                        "Address: " + json_data.getString("address"));
                map.put("number", "Number: " + json_data.getInt("number"));
                mylist.add(map);

            }
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }
        return returnString;

    }

}

}
4

2 に答える 2

3

あなたがしたいことは、インテントを介してデータを渡すことです。

onListItemClick メソッドから、次のコードを取得します。

Intent intent = new Intent(getContext(), NewActivity.class);
intent.putExtra("NAME", name);
intent.putExtra("ADDRESS", address);
// etc

startActivity(intent)

次に、新しいアクティビティの onCreate() メソッドで、次の操作を行います。

Intent intent = getIntent();
String name = intent.getStringExtra("NAME");
// ...etc

詳細については、これに関するレッスンが Android トレーニング サイトにあり、「別のアクティビティを開始する」と呼ばれています。

于 2012-08-16T17:20:19.400 に答える
0

いくつかのオプションがあります。インテントエクストラを介して、渡す必要のある関連データを分割して渡すことができます

アクティビティがインテント エクストラを受け取る一般的なパターンは、静的メソッドを作成して、そのアクティビティにエクストラ バンドルを作成させることです。このようなもの:

public static Intent createIntent(Activty activity, String myExtra)
    {
        Intent intent = new Intent(activity, MyActivity.class);
        if(myExtra != null) intent.putExtra(MY_EXTRA, myExtra);
        return intent;
    }

より複雑なオブジェクトをシリアル化またはパーセル化することにより、エクストラとして渡すことができます。幸運を!

于 2012-08-16T17:23:28.043 に答える