0

ダイアログ ボックスから編集したいリストビューがあります。リストビューでnotifyDataSetChanged()が必要であることをグーグルから読みましたが、これを実行しようとするとエラーが発生します:

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

ここに画像の説明を入力

私のリストビューは、もともとコードの上部に次のように設定されています。

ListView listView;

次に、オンロードのルーチンで設定されます

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 に読み込まれるダイアログ ボックスには、単純なインターフェイス、マイナス ボタン、プラス ボタン、テキスト ボックス、および移動ボタンがあります。テキストボックス内の番号が変更され、db 呼び出しが行われます。ダイアログボックスが閉じたら、リストビューを更新して新しい変更を反映させたいと思います。つまり、基本的に loadItems() ルーチンを再度実行します。

ダイアログの [go] ボタンをクリックすると、このようになります。私は明らかに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;
}

}

4

1 に答える 1

6

notifyDataSetChangedListView 自体ではなく、アダプターを呼び出す必要があります。

于 2012-10-30T14:44:59.567 に答える