2011-07-05 13 views
1

리스트 뷰가 다른 액티비티로부터 채워지는 listactivity가 있습니다.리스트 뷰 채우기 arraylist 업데이트

FirstActivity :

Intent view_order_intent = new Intent(this, thirdpage.class); 
view_order_intent.putStringArrayListExtra("selectedData", (ArrayList<String>)selectedData); 

ListActivity : 동일

Intent intent = getIntent(); 
Bundle bundle = intent.getExtras 
selectedData = (ArrayList<String>) bundle.get("selectedData"); 

다른 세 가지 활동을 위해 간다.
전류 출력 : I는 각 활동에 INT 설정 및 액티비티 이름을 발견하고 그에 따라리스트 뷰에 해당 활동의 각각의 ArrayList 채워 의도를 통해 전달하고있다. 이것은 네 가지 모든 활동에 대해 동일합니다. 이 방법을 사용하면 단일 arraylist의 내용을 기반으로 listview를 생성 할 수 있습니다. 다른 활동이로드 될 때마다 arraylist가 다시로드되고 목록보기에 모든 새 내용이로드됩니다.

원하는 출력 : 내가 원하는 것은 네 개의 활동가가있는 모든 arraylists를 결합하여 얻을 수있는 단일 arraylist에서 listview를 채우는 것입니다. 또한 listview는 새로운 내용을 모두 가지고 있으면 안되지만 내용에는 업데이트 만 있어야합니다 (새로운 배열 요소를 추가해야 함). 어느 것을 위해 나는 arraylist를 유지할 필요가있다라고 생각한다. 그러나 나는 이상하게 여긴다.
누군가 나를 도울 수 있습니까? 누군가가 원한다면 나는 코드를 게시 할 것이다.

업데이트 :

desserts.java (네 가지 활동 중 하나)

package a.b.layout; 

    import java.util.ArrayList; 
    import java.util.List; 
    import android.app.ListActivity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.util.SparseBooleanArray; 
    import android.view.View; 

import android.widget.Button; 
import android.widget.ListView; 
import android.widget.Toast; 

public class desserts extends ListActivity implements android.view.View.OnClickListener { 

    private List<Item> data; 
    private List<String> selectedData; 
    private ItemListAdapter adapter; 
    ListView lv; 
    int iClass = 1; 
    Button view_order,place_order,starters,mains,desserts,drinks; 

    @Override 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.menuslayout); 
    data = new ArrayList<Item>(10); 
    selectedData = new ArrayList<String>(); 

    data.add(new Item(10, "dessert1")); 
    data.add(new Item(11, "dessert2")); 
    data.add(new Item(12, "dessert3")); 
    data.add(new Item(13, "dessert4")); 
    data.add(new Item(14, "dessert5")); 
    data.add(new Item(15, "dessert6")); 
    data.add(new Item(16, "dessert7")); 
    data.add(new Item(17, "dessert8")); 
    data.add(new Item(18, "dessert9")); 
    data.add(new Item(19, "dessert10")); 
    data.add(new Item(20, "dessert11")); 

    adapter = new ItemListAdapter(this, data); 
    setListAdapter(adapter); 
    lv = getListView(); 
    lv.setItemsCanFocus(false); 
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    view_order=(Button)findViewById(R.id.vieworder); 
    view_order.setOnClickListener(this) ; 
    starters=(Button)findViewById(R.id.starters); 
    starters.setOnClickListener(this) ; 
    mains=(Button)findViewById(R.id.mains); 
    mains.setOnClickListener(this) ; 
    drinks=(Button)findViewById(R.id.drinks); 
    drinks.setOnClickListener(this) ; 
    } 
    //@Override 
    public void onBackPressed() { 
     Intent i=new Intent(this , layoutact.class); 
     startActivity(i); 
     return; 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()) 
    { 
     case R.id.vieworder: 
       showSelectedItems(); 
       Intent view_order_intent = new Intent(this, thirdpage.class); 
       view_order_intent.putStringArrayListExtra("selectedData", (ArrayList<String>)selectedData); 
       view_order_intent.putExtra("iClass", iClass); 
       startActivity(view_order_intent); 
       break; 

     case R.id.starters: 
      Intent starters_intent = new Intent(this, starters.class); 
      startActivity(starters_intent); 
      break; 

     case R.id.mains: 
      Intent mains_intent = new Intent(this, mains.class); 
      startActivity(mains_intent); 
      break; 
     case R.id.drinks: 
      Intent drinks_intent = new Intent(this, drinks.class); 
      startActivity(drinks_intent); 
      break; 
     } 
    } 


    private void showSelectedItems() { 
     final StringBuffer sb = new StringBuffer("Selection: "); 

     // Get an array that tells us for each position whether the item is 
     // checked or not 
     // -- 
     final SparseBooleanArray checkedItems = lv 
       .getCheckedItemPositions(); 
     if (checkedItems == null) { 
      Toast.makeText(this, "No selection info available", 
        Toast.LENGTH_LONG).show(); 
      return; 
     } 

     // For each element in the status array 
     // -- 
     boolean isFirstSelected = true; 
     final int checkedItemsCount = checkedItems.size(); 
     for (int i = 0; i < checkedItemsCount; ++i) { 
      // This tells us the item position we are looking at 
      // -- 
      final int position = checkedItems.keyAt(i); 

      // This tells us the item status at the above position 
      // -- 
      final boolean isChecked = checkedItems.valueAt(i); 

      if (isChecked) { 
       if (!isFirstSelected) { 
        sb.append(", "); 
       } 
       sb.append(data.get(position).getCaption()); 
       isFirstSelected = false; 
       selectedData.add(data.get(position).getCaption()); 
      } 
     } 

     // Show a message with the countries that are selected 
     // -- 
     Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show(); 
    } 

} 

다른 세 가지 활동은 목록의 내용을 제외하고 desserts.java 매우 동일합니다.
thirdpage.java (listactivity는)

package a.b.layout; 

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 
import android.app.ListActivity; 
import android.bluetooth.BluetoothAdapter; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class thirdpage extends ListActivity implements android.view.View.OnClickListener { 

    static final int REQUEST_ENABLE_BT = 0; 
    private List<Item> data; 
    private List<Item> startersData; 
    private List<Item> mainsData; 
    private List<Item> drinksData; 
    private ViewOrderAdapter adapter; 
    private ArrayList<String>selectedData; 
    TextView txtRate; 
    ImageView img; 
    ListView lv; 
    int iClass; 
    Button complete_order,place_order,starters,mains,desserts,drinks; 
    private List<Item> viewData; 

    /* (non-Javadoc) 
    * @see android.app.Activity#onCreate(android.os.Bundle) 
    */ 
    @SuppressWarnings("unchecked") 
    @Override 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.thirdpagelayout); 
    selectedData = new ArrayList<String>(); 

    try 
    { 
    Intent intent = getIntent(); 
    Bundle bundle = intent.getExtras(); 
    selectedData = (ArrayList<String>) bundle.get("selectedData"); 
    iClass = bundle.getInt("iClass"); 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
    data = new ArrayList<Item>(10); 
    startersData = new ArrayList<Item>(10); 
    mainsData = new ArrayList<Item>(10); 
    drinksData = new ArrayList<Item>(10); 
    viewData = new ArrayList<Item>(); 

    //Desserts 
    data.add(new Item(10, "dessert1")); 
    data.add(new Item(11, "dessert2")); 
    data.add(new Item(12, "dessert3")); 
    data.add(new Item(13, "dessert4")); 
    data.add(new Item(14, "dessert5")); 
    data.add(new Item(15, "dessert6")); 
    data.add(new Item(16, "dessert7")); 
    data.add(new Item(17, "dessert8")); 
    data.add(new Item(18, "dessert9")); 
    data.add(new Item(19, "dessert10")); 
    data.add(new Item(20, "dessert11")); 

    //Starters 
    startersData.add(new Item(10, "starter1")); 
    startersData.add(new Item(11, "starter2")); 
    startersData.add(new Item(12, "starter3")); 
    startersData.add(new Item(13, "starter4")); 
    startersData.add(new Item(14, "starter5")); 
    startersData.add(new Item(15, "starter6")); 
    startersData.add(new Item(16, "starter7")); 
    startersData.add(new Item(17, "starter8")); 
    startersData.add(new Item(18, "starter9")); 
    startersData.add(new Item(19, "starter10")); 
    startersData.add(new Item(20, "starter11")); 

    //Mains 
    mainsData.add(new Item(10, "mains1")); 
    mainsData.add(new Item(11, "mains2")); 
    mainsData.add(new Item(12, "mains3")); 
    mainsData.add(new Item(13, "mains4")); 
    mainsData.add(new Item(14, "mains5")); 
    mainsData.add(new Item(15, "mains6")); 
    mainsData.add(new Item(16, "mains7")); 
    mainsData.add(new Item(17, "mains8")); 
    mainsData.add(new Item(18, "mains9")); 
    mainsData.add(new Item(19, "mains10")); 
    mainsData.add(new Item(20, "mains11")); 

    //Drinks 
    drinksData.add(new Item(10, "drinks1")); 
    drinksData.add(new Item(11, "drinks2")); 
    drinksData.add(new Item(12, "drinks3")); 
    drinksData.add(new Item(13, "drinks4")); 
    drinksData.add(new Item(14, "drinks5")); 
    drinksData.add(new Item(15, "drinks6")); 
    drinksData.add(new Item(16, "drinks7")); 
    drinksData.add(new Item(17, "drinks8")); 
    drinksData.add(new Item(18, "drinks9")); 
    drinksData.add(new Item(19, "drinks10")); 
    drinksData.add(new Item(20, "drinks11")); 

    for(int i=0;i<selectedData.size();i++) 
    { 
     String str = selectedData.get(i); 
     if(iClass == 1) 
     {   
for(int idata = 0;idata<data.size();idata++) 
{ 
    if(str.equals(data.get(idata).getCaption())) 
    { 
     viewData.add(data.get(idata)); 
    } 
    else 
    { 

    } 
} 
     } 
else if (iClass == 2) 
{ 
    for(int idata = 0;idata<startersData.size();idata++) 
    { 
     if(str.equals(startersData.get(idata).getCaption())) 
     { 
      viewData.add(startersData.get(idata)); 
     } 
     else 
     { 

     } 
} 

} 
else if (iClass == 3) 
{ 
    for(int idata = 0;idata<mainsData.size();idata++) 
    { 
     if(str.equals(mainsData.get(idata).getCaption())) 
     { 
      viewData.add(mainsData.get(idata)); 
     } 
     else 
     { 

     } 
} 
} 
else if (iClass == 4) 
{ 
    for(int idata = 0;idata<drinksData.size();idata++) 
    { 
     if(str.equals(drinksData.get(idata).getCaption())) 
     { 
      viewData.add(drinksData.get(idata)); 
     } 
     else 
     { 

     } 
} 
} 

    } 
    long l = 0; 
    for(int i=0;i<viewData.size();i++) 
    { 
     l=l+viewData.get(i).getId(); 
    } 
    TextView txtTotal = (TextView)findViewById(R.id.totalText); 
    txtTotal.setText("TOTAL: $"+(String.valueOf(l))); 
    adapter = new ViewOrderAdapter(this, viewData); 
    setListAdapter(adapter); 
    lv = getListView(); 
    lv.setItemsCanFocus(false); 
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 


    complete_order=(Button)findViewById(R.id.completeorder); 
    complete_order.setOnClickListener(this) ; 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()) 
    { 
     case R.id.completeorder: 
      BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();  
      if (!mBluetoothAdapter.isEnabled()) { 
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
      } 
       break; 

     } 
    } 
} 
+0

질문이 완전하지 않습니다 (적어도 저에게). 좀 더 (psuedo) 코드를 게시 할 수 있다면 좋을 것입니다. – chedine

+0

질문을 업데이트하고 코드를 추가했습니다. –

답변

3

나는 아직 완전히 당신이 필요하고 팔로우 할 수있을 정도로 커피를 마시고,하지만하지 않은 당신은 다양한 활동 수업에서 귀하의 ArrayList의 데이터를 유지하려는 경우 Application 클래스를 확장하는 것이 유익 할 것입니다 (그리고 Manifest에서이 클래스에 대한 참조를 추가하는 것을 잊어서는 안됩니다). Application 클래스를 확장하면 활동 전반에서 '전역'을 유지 관리 할 수있는 클래스를 효과적으로 만들 수 있습니다. ArrayList를 유지할 수 있습니다.

+0

첫 번째 몇 줄은 제 대학 시절을 상기시켜줍니다. 커피 푸우 : P – ingsaurabh

+0

더하기 첫 줄 몇 줄 :-) – chedine