2016-11-24 11 views
-2

親リスト(MainActivity)に「名前」のみのリストビューを作成し、残りの「電子メール」と「モバイル」を別のアクティビティ(SingleContactActivity)に「名前」と共に渡そうとしています。それをどうすれば実現できますか?今、私のMainActivity listviewはすべての詳細、名前、電子メール、モバイルを表示しています。私はここから何かを削除する必要があることを知っています。私の2番目の活動結果はOKです。しかし、MainActivityはリストを「名前」だけで表示する必要があります。このために、私はMainActivityコードを変更する必要があります。問題は、私がJAVAとAndroidプログラミングを初めて習得したことです。 MainActivityから削除する行を正確に表示して、リストに「名前」だけを表示し、「メール」と「モバイル」を「名前」とともに2番目のアクティビティに渡します。リストビューの余分なデータをAndroidの別のアクティビティに渡すにはどうすればよいですか?

public class MainActivity extends AppCompatActivity { 

    private String TAG = MainActivity.class.getSimpleName(); 

    private ProgressDialog pDialog; 
    private ListView lv; 

    // URL to get contacts JSON 
    private static String url = "http://api.androidhive.info/contacts/"; 

    ArrayList<HashMap<String, String>> contactList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     contactList = new ArrayList<>(); 

     lv = (ListView) findViewById(R.id.list); 

     new GetContacts().execute(); 
    } 

    /** 
    * Async task class to get json by making HTTP call 
    */ 
    private class GetContacts extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      // Showing progress dialog 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Please wait..."); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      HttpHandler sh = new HttpHandler(); 

      // Making a request to url and getting response 
      String jsonStr = sh.makeServiceCall(url); 

      Log.e(TAG, "Response from url: " + jsonStr); 

      if (jsonStr != null) { 
       try { 
        JSONObject jsonObj = new JSONObject(jsonStr); 

        // Getting JSON Array node 
        JSONArray contacts = jsonObj.getJSONArray("contacts"); 

        // looping through All Contacts 
        for (int i = 0; i < contacts.length(); i++) { 
         JSONObject c = contacts.getJSONObject(i); 

         String id = c.getString("id"); 
         String name = c.getString("name"); 
         String email = c.getString("email"); 
         String address = c.getString("address"); 
         String gender = c.getString("gender"); 

         // Phone node is JSON Object 
         JSONObject phone = c.getJSONObject("phone"); 
         String mobile = phone.getString("mobile"); 
         String home = phone.getString("home"); 
         String office = phone.getString("office"); 

         // tmp hash map for single contact 
         HashMap<String, String> contact = new HashMap<>(); 

         // adding each child node to HashMap key => value 
         contact.put("id", id); 
         contact.put("name", name); 
         contact.put("email", email); 
         contact.put("mobile", mobile); 

         // adding contact to contact list 
         contactList.add(contact); 
        } 
       } catch (final JSONException e) { 
        Log.e(TAG, "Json parsing error: " + e.getMessage()); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(getApplicationContext(), 
            "Json parsing error: " + e.getMessage(), 
            Toast.LENGTH_LONG) 
            .show(); 
         } 
        }); 
       } 
      } else { 
       Log.e(TAG, "Couldn't get json from server."); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), 
           "Couldn't get json from server. Check LogCat for possible errors!", 
           Toast.LENGTH_LONG) 
           .show(); 
        } 
       }); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      // Dismiss the progress dialog 
      if (pDialog.isShowing()) 
       pDialog.dismiss(); 
      /** 
      * Updating parsed JSON data into ListView 
      * */ 
      ListAdapter adapter = new SimpleAdapter(
        MainActivity.this, contactList, 
        R.layout.list_item, new String[]{"name", "email", 
        "mobile"}, new int[]{R.id.name, 
        R.id.email, R.id.mobile}); 

      lv.setAdapter(adapter); 
     } 
    } 
} 
+0

可能な複製http://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-on-androidとhttp://stackoverflow.com/questions/2139134/how 1つのアンドロイド活動から別のものを使用する目的から別の目的を使用して送信する –

+0

インテントを使用してデータを渡します。 –

+0

2番目のアクティビティを開始するコードは表示されません。とにかく、インテントバンドルでデータを渡すことができます。 –

答えて

0

このような第二の活動で表示するように変数を渡すintent.and使用して、第2の活動に行くことをお試しください:onPostExecute機能や他のイベントで

使用これをuが

Intent intent = new Intent(activity1.this, activity2.class); 
intent.putExtra("name", namestringvariable); 
intent.putExtra("email", emailstringvariable); 
startActivity(intent); 
finish(); 

と第二に欲しいものアクティビティ

Bundle bundle = getIntent().getExtras(); 
String name= bundle.getString("name"); 
String email= bundle.getString("email"); 
+0

親愛なるAdi、私はあなたの2番目の活動で書いたコードを持っています。私は問題が最初のものである2番目の活動に変化をもたらす必要はありません。今、私のMainActivity listviewはすべての詳細、名前、電子メール、モバイルを表示しています。私はここから何かを削除する必要があることを知っています。私の2番目の活動結果はOKです。しかし、MainActivityはリストを「名前」だけで表示する必要があります。 MainActivityから削除する行を正確に表示して、リストに「名前」だけを表示し、「メール」と「モバイル」を「名前」とともに2番目のアクティビティに渡します。 – Nodirbek

+0

どこからUこの "R.id.email"を取得しますか? – Adi

1

あなたはバンドルにデータを保存し、次のアクティビティで持ち運ぶことができます。また、共有プリファレンスを使用してデータを一時的に保存したり、次のアクティビティで共有プリファレンスからデータを取得してから消去することもできます。 https://www.tutorialspoint.com/android/android_shared_preferences.htm

+0

私は私の質問を明確にしました。もう一度読み直してください。 – Nodirbek

関連する問題