2016-11-15 8 views
0

私は次のリストの宣言があります:私は、しかし文字列配列を配列アダプタに再追加するには?

final ArrayAdapter<String> adapterTime = new ArrayAdapter<String> 
(
    this, 
    R.layout.textv, 
    timeSlot 
); 

list.setAdapter(adapterTime); 

final ArrayList<String> timeSlot = new ArrayList<String>(); 
list = (ListView) findViewById(R.id.listviewtime); 

私は新しいアダプタに文字列配列を追加した場合、それはちょうどこのようにそれを作成されることを知っているが

adapterTime.clear(); 
adapterTime.addAll(timeSlot); 
list.setAdapter(adapterTime); 

このように解決した後で、アダプタ項目を再追加したいと考えています。誰でも私にいくつかの提案を与えることができますか?

EDIT:

これは私がしたいものです。

if(radioA.isChecked()){ 


       if(adapterTime.getItem(adapterTime.getCount()-1).equals("20:00:00")) 
       { 
        //do nothing 
       } 
       else{ 
        adapterTime.clear(); 
        adapterTime.addAll(timeSlot); 
        adapterTime.notifyDataSetChanged(); 
       } 

私はnotifychanged追加が、それはまだ空白になります。ラジオAである1時間をクリックすると20:00:00かどうかがチェックされ、そうでなければすべてクリアされてすべて追加されます。

+0

あなたがやっていること(例えば、あなたがこれらの呼び出しを行っているAndroidのメソッドなど)についてもう少しコンテキストを与えることができれば役に立つかもしれないので、直感的ではない(したがっておそらく表示されない) – jwir3

+1

'adapterTime.notifyDataSetChanged()'がそこにありません。 – Shark

+0

アダプターeveytimeを設定する必要はありません。サメの答えはうまくいかなければなりません。あなたがアイテムを変更するたびにnotifyDataSetChangedを呼び出す – uguboz

答えて

0

この問題の問題は、アダプタをクリアすると、文字列配列の項目もクリアされることです。 私は変数を一時的なものとして保存する別の文字列配列を作成しました。それがクリアされた後、元に戻す。

else{ 
        adapterTime.clear(); 
        if(timeSlot.isEmpty()){ 
         for(int i = 0; i <timeSlot2.size();i++){ 
          timeSlot.add(timeSlot2.get(i).toString()); 
         } 
        } 
        adapterTime.addAll(timeSlot); 

EDIT:アダプターが「Final」に設定されているため、結果が重複します。私は自分のコードが自分の場所にかなり詰まっているので、これを避ける方法はわかりません。

関連する問題