在片段中正确显示更新的ArrayList项

时间:2014-04-18 13:19:55

标签: android eclipse android-listfragment

基本上我的问题是这个。我试图在xml文件中的片段集中显示列表视图,此列表视图从ArrayList获取其数据,该ArrayList使用编辑文本从我在另一个活动中创建的表单获取其数据,编辑文本放入ArrayList并作为传递给片段类的Parcelable Array List。

在片段活动开始时,当然没有存储值,因此我在检查没有与id一起存储的意图时调出数据输入的表单活动我指定传递的Parcelable ArrayList为。我遇到的问题是,每当我尝试使用多个项目填充列表视图(显示第一个项目,返回到表单以添加另一个项目)时,它似乎只显示我每次添加的一个项目不是我之前添加的项目。

public class MasterFragment extends ListFragment {

private DetailFragment ingredDetails;
private ArrayList<Ingrediants> ingredList = new ArrayList<Ingrediants>();
private ArrayList<String> test2 = new ArrayList<String>();


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getActivity().getIntent();
    Bundle extras = intent.getExtras();

    if (extras != null) { //If extras are present
        boolean data = extras.getBoolean("ingrediant", true);
            if (data) {//Data present from form, retrieve from ArrayList<Ingrediants> and populate the ArrayList<String>
                    ingredList = getActivity().getIntent().getParcelableArrayListExtra("ingrediant");
                    test2.add(ingredList.get(i).ingrediantName);   
                    setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, test2));
            }//END OF IF DATA
    }//END OF IF EXTRAS
    else {//No data found, bring up the FormActivity
            Intent intent3 = new Intent(getActivity(), FormActivity.class);
            startActivity(intent3);
    }//END OF ELSE 
}//END OF onCreate()

我认为它与我如何创建列表视图并使用从Parcelable ArrayList意图获得的数据填充ArrayList有关,因为它可以每次重新创建列表视图并仅显示提供给的列表视图在这种情况下,它一次只能是一个项目。我已经被困在这一段时间了,并且想知道是否有人有任何想法?非常感谢。

1 个答案:

答案 0 :(得分:0)

您使用的ArrayList(test2)保持数据不会持久存在。您可以在sqlite数据库中保存成分并在片段中调用onCreate中的所有项目,或者将test2移动到主活动并在使用Intent包传递之前填充项目。