簡體   English   中英

列表視圖根本不更新

[英]List view does not update at all

嗨我正在使用帶有三個片段的查看尋呼機指示器,其中一個我有一個列表視圖,顯示我的SQLite數據庫的內容但是當我向我的表添加數據時,列表視圖沒有顯示我添加的新數據這是我的代碼:

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;

    }

所以任何幫助? 提前致謝! :)

更新

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>

擴展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();

}

第一個問題是你在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();

}

此時您無法調用setListAdapter ,因為尚未設置視圖。

你需要等到onViewCreated

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM