2017-03-08 17 views
0

私は別のアクティビティに配列リストを渡そうとしていますが、それだけでは不十分です。私は一日中、配列リストを「意図」で渡すように検索しましたが、成功しませんでした。私は学習目的のためのコードを書いた。どのようにデータを渡し、Arraylistに第2の活動を見せるか?Androidスタジオパスリストビューを別のアクティビティに移動

アクションボタンはbtn_saveです。さらに詳しい情報が必要なら私に知らせてください。あなたは、文字列の配列リストを渡そうとしている場合(ほとんど空)

public class ListOfNames extends Activity { 


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

    } 
} 
+0

さらに詳細?はい。エラーログはどうですか? –

+0

私の2回目の解決策として私の答えを見てください。アプリはバグなしで実行されますが、私のarraylistに2番目の値を追加しようとすると問題が発生します。それは最後の値だけを置きます。何かご意見は? –

答えて

0

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> addArray = new ArrayList<>(); 


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

     final EditText editTextOne = (EditText) findViewById(R.id.editTextOne); 
     final EditText editTextTwo = (EditText) findViewById(R.id.editTextTwo); 
     Button btn_showText = (Button) findViewById(R.id.buttonShow); 
     final TextView textView = (TextView) findViewById(R.id.textResults); 
     Button btn_refresh = (Button) findViewById(R.id.btn_refresh); 
     Button btn_close = (Button) findViewById(R.id.btn_close); 
     Button btn_save = (Button) findViewById(R.id.btn_save); 
     final ListView showMe = (ListView) findViewById(R.id.list_items); 

     btn_showText.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String text = editTextOne.getText().toString(); 
       String textTwo = editTextTwo.getText().toString(); 

       if (text.length() == 0 || textTwo.length() == 0){ 
        textView.setText("You must enter Name & Surname"); 
       }else { 
        textView.setText(Html.fromHtml(

          "<font color=\"red\">"+ text + "</font> " + 
            "<font color=\"blue\"><b>" + textTwo + " </b></font>")); 
       } 
      } 
     }); 
     btn_refresh.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
       startActivity(getIntent()); 
      } 
     }); 
     btn_close.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
       System.exit(0); 
      } 
     }); 

     btn_save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
//    Context context = getApplicationContext(); 
//    CharSequence mytext = "Hahahaha"; 
//    int duration = Toast.LENGTH_SHORT; 
//    Toast toast = Toast.makeText(context,mytext,duration); 
//    toast.show(); 
       String text = editTextOne.getText().toString(); 
       String textTwo = editTextTwo.getText().toString(); 
       String getInput = text + textTwo; 
       if (addArray.contains(getInput)){ 
        Toast.makeText(getBaseContext(), "Item already Added!", Toast.LENGTH_LONG).show(); 
       } 
       else if (getInput == null || getInput.trim().equals("")){ 
        Toast.makeText(getBaseContext(), "Input field is empty", Toast.LENGTH_LONG).show(); 
       } 
       else{ 
        addArray.add(getInput); 
        ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, addArray); 
        showMe.setAdapter(adapter); 
        Intent intent = new Intent(MainActivity.this, ListOfNames.class); 

        ((EditText)findViewById(R.id.editTextOne)).setText(" "); 
        ((EditText)findViewById(R.id.editTextTwo)).setText(" "); 
       } 
      } 
     }); 


    } 

    public void onButtonClick(View v){ 

     if (v.getId() == R.id.btn_list){ 
      Intent i = new Intent(MainActivity.this, ListOfNames.class); 
      startActivity(i); 
     } 

    } 

} 

ListOfNames二アクティビティ:

コードが

MainActivity(最初の活動)でありますそれは簡単になります。ただ、このような意図でのArrayListを渡す:

ArrayList<String> list = new ArrayList<String>(); 
Intent intent = new Intent(ActivityOne.this, ActivityTwo.class); 
intent.putStringArrayListExtra("key", list); 
startActivity(intent); 

そして、このようActivityTwoでそれを受け取る:

ArrayList<String> list = getIntent().getStringArrayListExtra("key"); 
+0

あなたはソリューションに非常に近いですが、機能しませんでした。私は一日中これを試しました。ボタンをクリックした後、私のアプリケーションを閉じる。 –

+0

@VasilisGreeceすべての例外? –

+0

下記の私の答えを参照してください。アプリはバグなしで実行されますが、私のarraylistに2番目の値を追加しようとすると問題が発生します。それは最後の値だけを置きます。何かご意見は? –

0

私は、このための一時的な解決策を(アプリが壊れていない)を発見しました。唯一の問題は、arraylistが増加しなかったことです。それは最後の値のみを含み表示します。

主な活動:

... 

else{ 
// addArray.add(getInput); 
// ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, addArray); 
//     showMe.setAdapter(adapter); 
    Intent intent = new Intent(MainActivity.this, ListOfNames.class); 
    intent.putExtra("data", getInput); 
    startActivity(intent); 

// ((EditText)findViewById(R.id.editTextOne)).setText(" "); 
// ((EditText)findViewById(R.id.editTextTwo)).setText(" "); 
       } 
... 

ListOfNames(第二の活動):

public class ListOfNames extends Activity { 
    ArrayList<String> addArrayT = new ArrayList<>(); 

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

     Bundle bundle = getIntent().getExtras(); 
     String data = bundle.getString("data"); 
     Button btn_more = (Button) findViewById(R.id.btn_more); 

     ListView showMe = (ListView) findViewById(R.id.list_items); 
     addArrayT.add(data); 
     ArrayAdapter<String> adapterT = new ArrayAdapter<>(ListOfNames.this, android.R.layout.simple_list_item_1, addArrayT); 
     showMe.setAdapter(adapterT); 

    } 
    public void onClickMore(View v){ 

     if (v.getId() == R.id.btn_more){ 
      Intent i = new Intent(ListOfNames.this, MainActivity.class); 
      startActivity(i); 
     } 
    } 
} 
関連する問題