2014-04-18 28 views
0

基本上我的问题是这样的。我试图在xml文件中的一个片段集中显示一个列表视图,这个列表视图从一个ArrayList中获取数据,该数据从我在另一个使用编辑文本创建的表单中获取其数据,这些文本被放入一个ArrayList中并作为一个Parcelable Array List给片段类。在片段内正确显示更新的ArrayList项目

在片段活动开始时,当然没有存储值,因此我在检查没有用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() 

我认为这是与我是如何创建的列表视图,并在ArrayList的填充它与数据从Parcelable ArrayList的意图了,因为它可以被重新创建列表查看每个时间和仅显示提供给它的数据在这种情况下将一次一个项目。我一直坚持这一段时间,并想知道如果有人有任何想法?非常感谢。

回答

0

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

+0

我这次没有使用数据库,所以我将不得不使用数据填充MainActivity中的test2 ArrayList,然后通过Intent捆绑将test2 ArrayList传递给fragment类以填充onCreate中的listView方法? – Rich751

+0

是的,试试看看它是否有效。 –

+0

由于某种原因,我现在似乎得到了一个运行时错误,当我通过表单提交了Images信息并且MainActivity已经将它分配给字符串ArrayList后,显示列表的碎片类加载完毕(确认已经使用日志) – Rich751