1

我將數據插入Sqlitedatabase中。我希望這些數據在片段類的Listview中顯示。問題是我的listview沒有立即加載新數據。換句話說,直到我去參加一些其他活動並回來時,它纔會被刷新。任何人都可以給我一個解決方案。我的代碼如下:如何在添加數據後刷新Fragment類中的Listview?

public class SentTaskFragment extends Fragment { 
ArrayList<HashMap<String, String>>val=new ArrayList<HashMap<String,String>>(); 
public SentTaskFragment(){} 
    public View onCreateView(LayoutInflater inflater1, ViewGroup container,Bundle savedInstanceState) { 
     View rootView = inflater1.inflate(R.layout.listview_header_row, container, false); 
     Databasehandler db=new Databasehandler(getActivity().getApplicationContext()); 
     final ListView l=(ListView) rootView.findViewById(R.id.listViewad); 
     int count=db.getcounttask(); 
     Log.i("count task",""+count); 
     if(count==0) 
     { 
     Toast.makeText(getActivity(), "No Task to Display", Toast.LENGTH_SHORT).show(); 
    } 
     else 
    { 
      if(id.compareTo("empty")!=0) 
      { 
    val=db.getTaskSent(id); 
    Toast.makeText(getActivity(), "arg2"+val, Toast.LENGTH_SHORT).show(); 
      } 
    ListAdapter k=new SimpleAdapter(getActivity(),val,R.layout.r,new String[]{"TaskId","heading","status"},new int[]{R.id.textViews,R.id.textViews1,R.id.textstatus}); 

      l.setAdapter(k); 
    } 
+0

獲取到您的適配器參考,並嘗試調用_adapter.notifyDataSetChanged(),只要您的數據更改/你想您的列表添加/刪除項目。我看到你把它存儲在k中;嘗試使用k.notifyDataSetChanged();讓我知道這是否適合你。 –

+0

我無法在我的適配器中使用notifyDataSetChanged()。那麼還有其他建議嗎? – user3256145

+0

嘗試通過((BaseAdapter)k).notifyDataSetChanged()將k轉換爲BaseAdapter; –

回答

3

把這段代碼插入數據後,到數據庫

((BaseAdapter)l.getAdapter()).notifyDataSetChanged(); 
+0

我正在使用SimpleAdapter – user3256145

+0

SimpleAdapter擴展了BaseAdapter;在這裏鑄造應該沒問題。 –

相關問題