簡體   English   中英

Android:使用notifyDataSetChanged更新listview

[英]Android: Using notifyDataSetChanged to update listview

我有一個要從對話框中編輯的列表視圖。 我從谷歌搜索中了解到,我需要在列表視圖上使用notifyDataSetChanged(),但是當我嘗試執行此操作時,我得到了一個錯誤:

The method notifyDataSetChanged(View) is undefined for the type ListView

在此處輸入圖片說明

我的列表視圖最初設置在代碼的頂部,只是一個:

ListView listView;

然后將其設置在onload的例程中

public void loadItems(){
    //Removed - just getting the data

     int rowCount;       
     rowCount = mCategory.size();

     listView = (ListView) findViewById(R.id.lvItems);


     int[] colors = {0, 0xFFFF0000, 0}; 
     listView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
     listView.setDividerHeight(1);
     listView.setAdapter(new CustomAdapter());

     listView.setClickable(true);
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

       @Override
       public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

          loadPopup(mDescription.get(position).toString(), mCountList.get(position).toString(), mTemplatecode.get(position).toString());
       }
     });
     //Removed - Tidying up
}

onlick上加載的對話框具有簡單的界面,減號按鈕,加號按鈕,文本框和執行按鈕。 文本框中的數字已更改,可以進行數據庫調用。 當對話框關閉時,我希望它刷新后面的列表視圖以反映新的更改。 即基本上再次重新運行loadItems()例程。

單擊對話框上的“執行”按鈕時,就會發生這種情況。 我顯然將notifyDataSetChanged放在錯誤的位置,因為它甚至不會運行。

 btnGo.setOnClickListener( new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            addAsset(v, AssetDesc, txt.getText().toString(), templateCode);
            listView.notifyDataSetChanged();
            loadItems();
            dialog.dismiss();
        }
    });

自定義適配器:

class CustomAdapter extends BaseAdapter
    {

    @Override
    public int getCount() {

        return mDescription.size();
    }
@Override
public Object getItem(int arg0) {

    return null;
}

@Override
public long getItemId(int arg0) {

    return 0;
}

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {

    LayoutInflater inf=getLayoutInflater();
    View v=inf.inflate(R.layout.noncriticalasset, arg2,false);

    TextView tv=(TextView)v.findViewById(R.id.txtOption);
    TextView tvCount=(TextView)v.findViewById(R.id.txtCount);

    tv.setText(mDescription.get(arg0).toString()); 
    tvCount.setText(mCountList.get(arg0).toString()); 

    return v;
}

}

您需要在適配器上而不是ListView本身上調用notifyDataSetChanged

暫無
暫無

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

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