2013-12-09 6 views
1

Привет, я использую индикатор представления пейджера с тремя фрагментами, и в одном из них у меня есть представление списка, которое отображает содержимое моей базы данных SQLite, но когда добавляются данные в мою таблицу, просмотр списка не работает 't показать ему новые данные, которые я добавил здесь, это мой код:Вид списка вообще не обновляется

public class caleryhistory extends SherlockListFragment { 
    List<calery_lagari> Calery_lagari; 
    calery_lagari_SQLiteData data; 
    ArrayAdapter<calery_lagari> adapter; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.calery_history, null); 


     data = new calery_lagari_SQLiteData(getActivity()); 
     data.open(); 
     Calery_lagari = data.findall(); 
     adapter = new ArrayAdapter<calery_lagari>(getActivity(), 
       R.layout.listback_layout, Calery_lagari); 
     adapter.notifyDataSetChanged(); 

     setListAdapter(adapter); 

     adapter.notifyDataSetChanged(); 

     return v; 

    } 

поэтому любая помощь? Спасибо заранее! :)

Update

import java.util.List; 

import mr.chag.va.lagar.R; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.actionbarsherlock.app.SherlockListFragment; 


public class caleryhistory extends SherlockListFragment { 
    List<calery_lagari> Calery_lagari; 
    calery_lagari_SQLiteData data; 
    ArrayAdapter<calery_lagari> adapter; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.calery_history, null); 




     return v; 

    } 
    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     data = new calery_lagari_SQLiteData(getActivity()); 
     data.open(); 
     Calery_lagari = data.findall(); 
     adapter = new ArrayAdapter<calery_lagari>(getActivity(), 
       R.layout.listback_layout, Calery_lagari); 
     adapter.notifyDataSetChanged(); 
     ListView listView = (ListView)view.findViewById(android.R.id.list); 
     listView.setAdapter(adapter); 


     adapter.notifyDataSetChanged(); 
     super.onViewCreated(view, savedInstanceState); 
    } 

} 

мой макет

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="clear" 
     android:text="clear all" /> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    </ListView> 

</LinearLayout> 

ответ

2

Лучший способ при расширении SherlockListFragments должен иметь onCreateView вернуть надутый вид, а затем переопределить onViewCreated. И поместите свой код, который изменит ваше представление.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle b){ 
    return inflater.inflate(R.layout.calery_history, null); 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    data = new calery_lagari_SQLiteData(getActivity()); 
    data.open(); 
    Calery_lagari = data.findall(); 
    adapter = new ArrayAdapter<calery_lagari>(getActivity(), view.R.layout.listback_layout, Calery_lagari); 
    adapter.notifyDataSetChanged(); 

    setListAdapter(adapter); 

    adapter.notifyDataSetChanged(); 

} 
+0

Спасибо! но все еще не работает – Like

+0

Он должен ... Что он делает сейчас? –

+0

Я привел весь свой код в onViewCreated Override, но все же список не обновляет его, он просто показывает старые данные :( – Like

0

Вы не можете позвонить setListAdapter в этой точке, как вид еще не установлен.

Необходимо подождать до onViewCreated.

1

Первой проблемой является то, что вы устанавливаете адаптер в onCreateView. В представлении списка onCreateView еще не создано. Во-вторых, вам нужно установить адаптер для правильного просмотра списка. Поскольку вы переопределяете oncreateview, вы не можете использовать setListAdapter, потому что он ссылается на просмотр списка по умолчанию viet. Попробуйте следующее:

 @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    return inflater.inflate(R.layout.calery_history, null); 
} 

    @Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 

    data = new calery_lagari_SQLiteData(getActivity()); 
    data.open(); 
    Calery_lagari = data.findall(); 
    adapter = new ArrayAdapter<calery_lagari>(getActivity(), 
      view.R.layout.listback_layout, Calery_lagari); 

    ListView listView = (ListView)view.findViewById(R.id.YOUR_LISTVIEW_ID); 
    listView.setAdapter(adapter); 

    adapter.notifyDataSetChanged(); 

} 
+0

Than ks, но все еще не работает! – Like

+0

делитесь также своим кодом calery_history? – vandzi

+0

Я обновил вопрос – Like

Смежные вопросы