簡體   English   中英

無法獲取方法notifydatasetchanged

[英]Can't get method notifydatasetchanged

上下文:我有2個類,一個類Listactivity和另一個類AudioListActivity,我定義了一個自定義arrayadapter。 所以在帶有oncreate的ListActivity中,我用setListAdapter(MyListAdapter = new ....)調用我的自定義arrayadapter,用10個項目填充我的listview。 它運作良好。 我的問題是在onclick上,在listactivity中:1 /我調用一個線程來重新加載一個包含10個其他項目的數組(效果很好)2 /我想用這個數組刷新我的listview(不再使用setListAdapter,因為我不想在內存中創建另一個適配器對象)。 所以我想到notifydatasetchanged()。 但是當我嘗試MyListAdapter時。 “完成”它沒有給出notifydatasetchanged。 那我該怎么辦? 如何通知我的arrayadapter刷新列表視圖? 需要一些幫助 ! 謝謝 !

繼承人Listactivity

 ListView ClassListView;

ListAdapter MyListAdapter;


@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_audio);

    ClassListView = getListView();
    ClassListView.addFooterView(footer);


    //chargement des données de la premiere page de la listview via LA thread
    threadChargeListe(0, "PremierePage", "aucun");


    setListAdapter(MyListAdapter=new AudioListAdapter(this, 0, MyApplication.getMyArrayDonneesListeAudio()));


    //Mise en place des listeners
    addListener();
}
private void addListener() {

    //listener bouton page suivante
    ImageButton MyPageSuivante = (ImageButton) findViewById(R.id.pagesuivante);
    MyPageSuivante.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //chargement des données de la page suivante via LA thread
            int I = MyApplication.getMyArrayDonneesListeAudio().size();
            int idref = MyApplication.getMyArrayDonneesListeAudio().get(I - 1).getIdDemandeAudio();           /* calcul de la ref de l'audio pivot */
            chargeListe(idref, "PageSuivante", "aucun");                                                    
            MyListAdapter.  >>>>> HERE i CAN T ACCESS notifydatasetchanged ???
        }
    });

這是我的arraydapter的第一行

public class AudioListAdapter extends ArrayAdapter<DonneesListeAudio> {


// Variables
private Activity activity;
private ArrayList<DonneesListeAudio> DataOfListView;
private static LayoutInflater Inflater = null;
int classPosition = 0;
ViewWrapper Holder;
private long classTimeHeureLecture = 0;
private AsyncTask<Integer, Void, Void> MyAsynchTask;
private AtomicBoolean isThreadRunnning = new AtomicBoolean();
private AtomicBoolean isThreadPausing = new AtomicBoolean();

String classAudioFileName;


//Constructeur
public AudioListAdapter(Activity activity, int textViewResourceId, ArrayList<DonneesListeAudio> _Liste) {
    super(activity, textViewResourceId, _Liste);
    try {
        this.activity = activity;
        this.DataOfListView = _Liste;

        Inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    } catch (Exception e) {

    }
}




//construction de la vue de l'item
public View getView(int position, View convertView, ViewGroup parent) {
    classPosition = position;
    View ItemView = convertView;

    try {
        if (convertView == null) {  AND SO ON .....

ListAdapter沒有成員notifyDataSetChanged() 您必須將MyListAdapterArrayAdapter才能訪問它。

((ArrayAdapter<DonneesListeAudio>) MyListAdapter).notifyDataSetChanged();

檢查拼寫錯誤

暫無
暫無

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

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