ダイアログ ボックスから編集したいリストビューがあります。リストビューで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;
}
}