2013-03-29 84 views
1

如果我的問題看起來很普遍,那麼我很抱歉。我有谷歌,並有很多結果,但他們都不能申請。Android:刷新片段中的GridView

我有一個片段,使用GridView layout。我也爲我的gridview使用BaseAdapter

當數據發生變化時,我打電話給gridView.invalidateViews();,但gridview不會重新繪製新數據。

gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
           getTable(position).setStatus("busy"); // change data 
           gridView.invalidateViews(); // and redraw 
       } 

或者說,我做的另一種方式:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.waiter_view_fragment, container, false); 

    gridView = (GridView) (rootView).findViewById(R.id.waiterGridView); 
    gridView.setAdapter(new ImageAdapterHost(this, getActivity())); 
     // Add this line here 
     ((BaseAdapter)gridView.getAdapter()).notifyDataSetChanged(); 
    } 

答案仍然是相同的。我的gridview不重繪,雖然當我測試數據時,數據真的改變了,但不更新我的gridview。

請教我如何在數據更改後重繪gridview片段。

謝謝:)

回答

1

讓您的適配器內部片段的局部變量,添加一個方法到你的片段調用my_adapter_variable.notifyDataSetChanged()。 一旦你的數據發生變化,找到你的片段並調用該方法。像這樣的東西適用於我:

public void gotLessonDetails(LessonDetailsEvent event) 
{ 
[...] 
    for (String tag: tabs) { 
     StudentListFragment f = (StudentListFragment) getSupportFragmentManager().findFragmentByTag(tag); 
     if (f != null) { 
      f.refreshAdapter(); 
     } 
    } 
[...] 
} 
+0

點擊網格視圖項目時數據發生變化。因此,每次單擊項目時,我都會更改數據,並在其片段內調用'((BaseAdapter)gridView.getAdapter())。notifyDataSetChanged();'。但沒有什麼變化:(我可以這樣做嗎? – hqt

+0

可以請協助嗎?http://stackoverflow.com/questions/40095826/how-to-update-a-fragment-that-has-a-gridview-populated-from-源碼 – Si8