[英]Set Adapter for Fragment's ListView from Parent
因此,基本上,片段是通過ViewPager放置在Activity內的,而我試圖通過從父活動中將其填充來填充Fragment內的ListView。 但是,不會填充這些項目,並且不會引發任何錯誤。
數據應從活動中填充
listview在片段中
這是我的代碼:
活動內容 :
public class SearchActivity extends ActionBarActivity {
ListView peopleList;
ArrayList<String> data = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
//Inflate the Fragment to a new View Object
LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vii = inflator.inflate(R.layout.activity_search_people_tab, null);
//Initialise the ListView with the Fragment's listview
peopleList = (ListView) vii.findViewById(R.id.searchpeople_list);
data.add("1");
data.add("2");
PopulateResults();
}
private void PopulateResults() {
//populate the fragment's listview with the data generated by the parent activity
SearchPeopleResultsAdapter adapter = new SearchPeopleResultsAdapter(SearchActivity.this,data);
peopleList.setAdapter(adapter);
}
我只是想用父活動生成的值填充片段中的列表視圖。 我該如何做到這一點呢?
編輯:
因此,基本上,ACTIVITY具有一個EditText,在其下方,我具有一個帶有兩個片段的ViewPager。 第一個片段具有一個ListView。 “文字已更改”我需要用數據填充ListView。 這是為了搜索功能:)
您可以通過多種方法來實現ListView的初始化。
首先 :由於ListView屬於Fragment,因此可以在Fragment onCreateView
對其進行初始化,讓它進行處理很有意義。
第二 :將數據添加到Bundle
,然后使用Fragment中的setArguments()
方法將其添加到Fragment中,然后在onCreate()
內部檢索Bundle
和您附加的數據。
第三 :保存碎片的列表,從內保存它們getItem()
的內部FragmentPagerAdapter
。 當您需要初始化/更新ListView適配器時,可以檢索Fragment
並調用您創建的方法來初始化/更新ListView。
希望這可以幫助!
編輯:
假設您有一個TextView
並在其TextWatcher#afterTextChanged()
方法上執行以下操作:
// This adapter should be your custom adapter -- extending FragmentPagerAdapter
YourFragment fragment = (YourFragment) mViewPagerAdapter.getFragment(targetFragmentPostion);
fragment.addNewData(yourNewData);
在YourFragment#addNewData(...)
方法中,您可能會遇到類似以下內容的情況:
mListOfData.add(newData);
mListViewAdapter.notifyDataSetChanged();
我假設您已成功完成ListView的初始化,所以此編輯后的內容用於更新其內容。
希望這對您有所幫助。
我不確定在沒有片段代碼的情況下您實際的實現是什么,但是您描述它的方式不起作用,因為您通過在活動的onCreate()
中膨脹該視圖的xml而不是實際的片段視圖來膨脹一個片段的視圖將在片段的onCreateView()
上呈現。
因此,在您的情況下,您必須通過捆綁軟件或任何其他方法將適配器數據從Activity傳遞到Fragment,然后僅在Fragment的onCreateView()
中填充視圖。
簡而言之,根據您當前的實現,這兩種視圖都是不同的,因此不會影響或更新您的Fragment視圖。 實際的片段視圖僅通過onCreateView(
)方法(在設備屏幕上看到的)創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.