我希望有人可以提供幫助。ArrayAdapter替換列表而不是更新ListView
我有一個食物菜單應用程序。當用戶打開應用時,他們會看到一系列食物類別,例如「主菜」。我使用string-array從Strings.xml文件中提取這個列表。當選擇一個類別時,它會打開第二個佈局,顯示可以選擇的食品列表,但現在我的問題是:
當他們單擊某個項目(如牛排)時,它會將項目添加到所選項目佈局,但如果我回到ListMenu(通過按手機上的後退按鈕)並選擇另一個項目,它將替換我之前選擇的項目。我如何獲得它追加新項目?
這裏是我的文件和代碼:
mainCoarse.java
package com.mycompany.lunch;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ListMenu extends ListActivity {
List<String> itemordered = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maincoarsemain);
final ListView lv=(ListView)findViewById(R.id.listView1);
final ArrayList<String> myNewList = new ArrayList<String>();
ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.maincoarse_menu,android.R.layout.simple_list_item_1);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
String item=lv.getItemAtPosition(arg2).toString();
String itemordered;
itemordered = item + " added to list";
Toast.makeText(getApplicationContext(), itemordered, Toast.LENGTH_LONG).show();
myNewList.add(item);
ListView newList = (ListView) findViewById(R.id.menu_item);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListMenu.this, myNewList, android.R.layout.simple_list_item_1);
newList.setAdapter(adapter);
// Launching new Activity on selecting List Item
Intent i = new Intent(getApplicationContext(), ListItem.class);
// sending data to new activity
i.putExtra("item", item);
startActivity(i);
}
});
}
}
ListItem.java
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListItem extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.selecteditems);
Intent i = getIntent();
ArrayList<String> myNewList = new ArrayList<String>();
String item = i.getStringExtra("item");
myNewList.add(item);
ListView selecteditems = (ListView) findViewById(R.id.listitems);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListItem.this, android.R.layout.simple_list_item_1, myNewList);
selecteditems.setAdapter(adapter);
}
}
我HAVA試圖改變行 「myNewList.add(項目);」到「myNewList.addAll(item);」但後來我得到的錯誤:方法中的addAll(集合)在ArrayList類型是不適用的參數(字符串)
selecteditems.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/main_background"
android:paddingLeft="10.0dip"
android:paddingTop="0.0dip"
android:paddingRight="10.0dip"
android:paddingBottom="10.0dip"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="100.0dip"
android:background="@drawable/title" />
<LinearLayout
android:orientation="horizontal"
android:background="@drawable/head"
android:layout_width="fill_parent"
android:layout_height="10.0dip" />
<ListView
android:id="@+id/listitems"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25dip"
android:textStyle="bold"
android:padding="10dip"
android:textColor="#ffffff"/>
</LinearLayout>
總結:它添加項目到新selecteditems佈局,但如果我回到ListMenu並選擇另一個項目,它會替換我之前選擇的項目。我如何獲得它追加新項目?
我只看到適配器設置一次「selecteditems.setAdapter(myadapter);」我很抱歉,我在搞什麼? – Sobo 2012-07-21 13:48:54