2016-04-01 12 views
0

Bu benim ilk sorum bu yüzden benim için çok kolay :) Ben android için yeni ve basit bir liste yapmaya çalışıyorum. İlk Etkinlikte kullanıcı ikinci Etkinlikte bir liste olarak görüntülenecek veri girebilir.ArrayList'i başka bir Etkinliğe geçirme ama sonuç göstermiyor mu?

Verileri bir Etkinlikten diğerine geçirmek için Intents kullanıyorum, ancak hiçbir şey gösterilmediğinden ClassB Etkinliğimde önemli bir şeyi kaçırdığımı biliyorum.

public class ClassA extends AppCompatActivity { 

    EditText note; 
    Button saveNoteB, goToNotesB; 
    public final static String EXTRA_NOTE = "com.lisa.currys.userlistarray.note"; 

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

     saveNoteB = (Button) findViewById(R.id.saveNote); 
     saveNoteB.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        Intent i = new Intent(ClassA.this, ClassB.class); 
        note = (EditText) findViewById(R.id.note); 
        String userInput = note.getText().toString(); 

        ArrayList<String> arr = new ArrayList<String>(); 
        arr.add(userInput); 

        i.putStringArrayListExtra("note", arr); 
        startActivity(i); 
      } 
     }); 

ve benim ikinci etkinliği için

:

public class ClassB extends AppCompatActivity { 

public static android.widget.ListView displayNotes; 
ArrayList<String> arr = new ArrayList<String>(); 

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

    arr = getIntent().getExtras().getStringArrayList(ClassA.EXTRA_NOTE); 
    displayNotes = (ListView)findViewById(R.id.listView); 
    Intent i = getIntent(); 
    arr = i.getStringArrayListExtra("note"); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1); 
    displayNotes.setAdapter(adapter); 
    } 
} 

Herhangi işaretçileri veya tavsiye en hoş olurdu

İşte benim ana kodudur.

Teşekkür ederiz.

cevap

1

Asla öğeleri arr'da ArrayAdapter'a ekleyemezsiniz. unsurları ekleyecek olan aşağıdaki gibi ArrayAdapter için üç argüman yapıcı kullanın:

ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr); 
+0

Evet, bu mükemmel çalışıyor. Arriyi kaçırdığımı fark etmedim. Muhtemelen uzun süre ona bakıyor. Çok teşekkür ederim George Mulligan :) – Woowoo

1

ClassA bu deneyin:

i.putStringArrayListExtra(EXTRA_NOTE, arr); 

veya ClassB içinde

bu deneyin:

arr = getIntent().getExtras().getStringArrayList("note"); 

Sen değerlerini ayarlamak ve almak için aynı anahtarı kullanmak zorunda.

Bu arada, neden "arr" a iki kez değer atarsınız?

+0

Teşekkür ARP geri almak için. Evet, haklısın iki kere bildirdim. Çoğunu çıkardım ve biraz temizledim. Her iki yöntemi de denedim, ama benim için işe yaramıyor. Hata yok, ancak hala görüntülenmiyor. Aşağıdaki yöntem yine de iş yapıyor, tekrar teşekkürler. – Woowoo

0
Try this 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1); 

    Above statement you are pass the context and layout in which your data 
    display but you are not give the data which is store 
    in your **arr** arraylist so you not show anything. 

    replace this statement to 

    ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr); 
İlgili konular