Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除时Android OrmLite刷新列表_Android_Database_Listview_Ormlite - Fatal编程技术网

删除时Android OrmLite刷新列表

删除时Android OrmLite刷新列表,android,database,listview,ormlite,Android,Database,Listview,Ormlite,当列表中的项目被删除时,我正在尝试刷新视图。我当前正在尝试刷新/重新加载AsyncTask的onPostExecute方法中的视图。到目前为止,我尝试过的都没有成功。这似乎是一项容易完成的任务。我的自定义适配器扩展了BaseAdapter。我希望我错过了一些简单的东西。有人能发光吗 干杯 public class ItemListActivity extends OrmLiteBaseListActivity<DatabaseHelper> { private final

当列表中的项目被删除时,我正在尝试刷新视图。我当前正在尝试刷新/重新加载AsyncTask的onPostExecute方法中的视图。到目前为止,我尝试过的都没有成功。这似乎是一项容易完成的任务。我的自定义适配器扩展了BaseAdapter。我希望我错过了一些简单的东西。有人能发光吗

干杯

public class ItemListActivity extends OrmLiteBaseListActivity<DatabaseHelper>  {

    private final String TAG = getClass().getSimpleName();
    private DatabaseHelper dbHelper;
    private ListView itemListView;
    private ItemListAdapter listAdapter;
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.itemslistactivity);
        registerForContextMenu(getListView());
        itemListView = getListView();     
        itemListView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
                MenuInflater inflater = getMenuInflater();
                inflater.inflate(R.menu.listview_context_menu, menu);
            }           
        });
        listAdapter = new ItemListAdapter(getApplicationContext(), new ArrayList<Item>());
        itemListView.setAdapter(listAdapter);

        dbHelper = getHelper();
        new SelectDataTask().execute(dbHelper);

    }

    public void add_OnClick(View v) {
         Intent intent = new Intent();
         intent.setClass(this, AddItemActivity.class);
         startActivity(intent);
    }



    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        Item b = (Item) listAdapter.getItem(info.position);
        try {
            switch (item.getItemId()) {
                case R.id.remove_item:          
                    dbHelper.getItemDao().deleteById(new Integer(b.id));
                    listAdapter.notifyDataSetChanged();
                    return true;
            }
        } catch (SQLException e) {
            //FIXME
            e.printStackTrace();
            Log.e(TAG, e.getMessage());
        }
        return false;
    }

    private class SelectDataTask extends AsyncTask<DatabaseHelper, Void, List<Item>> {
        private final ProgressDialog dialog = new ProgressDialog(
                ItemListActivity.this);

        // can use UI thread here
        protected void onPreExecute() {
            this.dialog.setMessage("Retreiving item data...");
            this.dialog.show();
        }

        @Override
        protected List<Item> doInBackground(DatabaseHelper... params) {
            List<Item> l = null;
            try {
                Dao<Item, Integer> dao = params[0].getItemDao();
                l = dao.queryForAll();
            } catch (SQLException e) {
                //TODO -- cleanup
                e.printStackTrace();
                Log.e(TAG, e.getMessage());
            }
            return l;
        }

        // can use UI thread here
        @Override
        protected void onPostExecute(List<Item> b) {
            listAdapter = new MyListAdapter(getApplicationContext(), b);
            itemListView.setAdapter(listAdapter);
            //TODO -- none of this works
            itemListView.invalidateViews();
            listAdapter.notifyDataSetChanged();
            if (this.dialog.isShowing()) {
                this.dialog.dismiss();
            }

        }
    }
公共类ItemListActivity扩展了OrmListBaseListActivity{
私有最终字符串标记=getClass().getSimpleName();
私有数据库助手dbHelper;
私有ListView项目ListView;
私有项目列表适配器列表适配器;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.itemslistactivity);
registerForContextMenu(getListView());
itemListView=getListView();
setOnCreateContextMenuListener(新的OnCreateContextMenuListener(){
public void onCreateContextMenu(ContextMenu菜单、视图v、ContextMenuInfo菜单信息){
MenuInflater充气机=getMenuInflater();
充气器。充气(R.menu.listview\u上下文菜单,菜单);
}           
});
listAdapter=new ItemListAdapter(getApplicationContext(),new ArrayList());
setAdapter(listAdapter);
dbHelper=getHelper();
新建SelectDataTask().execute(dbHelper);
}
公共无效添加单击(视图v){
意图=新意图();
intent.setClass(这个,AddItemActivity.class);
星触觉(意向);
}
@凌驾
公共布尔值onContextItemSelected(MenuItem项){
AdapterContextMenuInfo信息=(AdapterContextMenuInfo)项。getMenuInfo();
项目b=(项目)listAdapter.getItem(信息位置);
试一试{
开关(item.getItemId()){
案例R.id.移除项目:
dbHelper.getItemDao().deleteById(新整数(b.id));
listAdapter.notifyDataSetChanged();
返回true;
}
}捕获(SQLE异常){
//修理工
e、 printStackTrace();
Log.e(标记,e.getMessage());
}
返回false;
}
私有类SelectDataTask扩展了AsyncTask{
private final ProgressDialog dialog=新建ProgressDialog(
ItemListActivity.this);
//可以在这里使用UI线程
受保护的void onPreExecute(){
this.dialog.setMessage(“检索项目数据…”);
this.dialog.show();
}
@凌驾
受保护列表doInBackground(DatabaseHelper…参数){
列表l=空;
试一试{
Dao Dao=params[0]。getItemDao();
l=dao.queryForAll();
}捕获(SQLE异常){
//待办事项——清理
e、 printStackTrace();
Log.e(标记,e.getMessage());
}
返回l;
}
//可以在这里使用UI线程
@凌驾
受保护的void onPostExecute(列表b){
listAdapter=新的MyListAdapter(getApplicationContext(),b);
setAdapter(listAdapter);
//TODO——这些都不起作用
itemListView.invalidateViews();
listAdapter.notifyDataSetChanged();
if(this.dialog.isShowing()){
this.dialog.disclose();
}
}
}
检查我的解决方案(组积垢):

公共类组ReferenceActivity扩展了BaseAppActivity{
私有数据库助手dbHelper;
私有列表视图列表视图;
私有组适配器组适配器;
私有数据库模型;
私有OnDeleteListener OnDeleteListener;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.group\u preference\u布局);
setDbHelper(新的DatabaseHelper(getApplicationContext());
setGroupModel(新数据库模型(getDbHelper(),GroupData.class));
setListView((ListView)findViewById(R.id.lv_组));
setGroupAdapter(新的GroupAdapter(groupsReferenceActivity.this));
getListView().setAdapter(getGroupAdapter());
setOnDeleteListener(新的OnDeleteListener(){
@凌驾
公共void onClick(GroupData组){
removeGroup(组);
}
});
getListView().setOnItemClickListener(新的OnItemClickListener()){
@凌驾
公共单击(适配器视图适配器、视图父级、,
内部位置,长id){
addGroup(getGroupAdapter().getItem(位置));
}
});
getGroupAdapter().setOnDeleteListener(getOnDeleteListener());
doLoadGroups();
}
私有void doLoadGroups(){
getGroupAdapter().clear();
列表项=getGroupModel().getAll();
用于(对象组:项){
getGroupAdapter().add((GroupData)组);
}
getGroupAdapter().notifyDataSetChanged();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
super.onCreateOptions菜单(菜单);
getSupportMenuInflater().充气(R.menu.groups\u preference\u菜单,菜单);
返回true;
}
@凌驾
公共布尔值onMenuItemSelected(int-featureId,MenuItem项){
super.onMenuItemSelected(featureId,item);
开关(item.getItemId()){
案例R.id.选项\项目\添加\组:
addGroup();
打破
违约:
打破
}
返回true;
}
私有void addGroup(){
addGroup(null);
}
私有void addGroup(最终GroupData GroupData){
LayoutInflater工厂=LayoutInflater工厂
.来自(Gr
public class GroupsPreferenceActivity extends BaseAppActivity {
    private DatabaseHelper dbHelper;
    private ListView listView;
    private GroupAdapter groupAdapter;
    private DatabaseModel groupModel;
    private OnDeleteListener onDeleteListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.group_preference_layout);
        setDbHelper(new DatabaseHelper(getApplicationContext()));
        setGroupModel(new DatabaseModel(getDbHelper(), GroupData.class));
        setListView((ListView) findViewById(R.id.lv_group));
        setGroupAdapter(new GroupAdapter(GroupsPreferenceActivity.this));
        getListView().setAdapter(getGroupAdapter());
        setOnDeleteListener(new OnDeleteListener() {
            @Override
            public void onClick(GroupData group) {
                removeGroup(group);
            }
        });
        getListView().setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapter, View parent,
                    int position, long id) {
                addGroup(getGroupAdapter().getItem(position));
            }
        });
        getGroupAdapter().setOnDeleteListener(getOnDeleteListener());
        doLoadGroups();
    }

    private void doLoadGroups() {
        getGroupAdapter().clear();
        List<?> items = getGroupModel().getAll();
        for (Object group : items) {
            getGroupAdapter().add((GroupData) group);
        }
        getGroupAdapter().notifyDataSetChanged();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getSupportMenuInflater().inflate(R.menu.groups_preference_menu, menu);
        return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        super.onMenuItemSelected(featureId, item);
        switch (item.getItemId()) {
        case R.id.option_item_add_group:
            addGroup();
            break;

        default:
            break;
        }
        return true;
    }

    private void addGroup() {
        addGroup(null);
    }

    private void addGroup(final GroupData groupData) {
        LayoutInflater factory = LayoutInflater
                .from(GroupsPreferenceActivity.this);
        final View textEntryView = factory.inflate(
                R.layout.create_group_dialog_view, null);
        final EditText editName = (EditText) textEntryView
                .findViewById(R.id.tv_group_name);
        String positiveButtonName = getString(R.string.create);
        OnClickListener positiveListener = new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                createGroup(editName.getText().toString());
            }
        };
        if (groupData != null) {
            positiveButtonName = getString(R.string.update);
            editName.setText(groupData.getName());
            positiveListener = new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    groupData.setName(editName.getText().toString());
                    updateGroup(groupData);
                }
            };
        }
        AlertDialog.Builder builder = new AlertDialog.Builder(
                GroupsPreferenceActivity.this);
        String title = getString(R.string.preference_add_group);

        builder.setCancelable(true)
                .setTitle(title)
                .setView(textEntryView)
                .setPositiveButton(positiveButtonName, positiveListener)
                .setNegativeButton(getString(R.string.cancel),
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });
        final AlertDialog alert = builder.create();
        alert.show();
        final Button yesButton = alert.getButton(Dialog.BUTTON_POSITIVE);
        yesButton.setEnabled(false);
        editName.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                yesButton.setEnabled(s.length() > 0);
            }
        });
    }

    protected void updateGroup(GroupData groupData) {
        getGroupModel().update(groupData);
        doLoadGroups();
    }

    protected void createGroup(String name) {
        GroupData groupData = new GroupData();
        groupData.setName(name);
        getGroupModel().add(groupData);
        doLoadGroups();
    }

    protected void removeGroup(GroupData group) {
        getGroupModel().remove(group);
        doLoadGroups();
    }

    public DatabaseHelper getDbHelper() {
        return dbHelper;
    }

    public void setDbHelper(DatabaseHelper dbHelper) {
        this.dbHelper = dbHelper;
    }

    public ListView getListView() {
        return listView;
    }

    public void setListView(ListView listView) {
        this.listView = listView;
    }

    public GroupAdapter getGroupAdapter() {
        return groupAdapter;
    }

    public void setGroupAdapter(GroupAdapter groupAdapter) {
        this.groupAdapter = groupAdapter;
    }

    public DatabaseModel getGroupModel() {
        return groupModel;
    }

    public void setGroupModel(DatabaseModel groupModel) {
        this.groupModel = groupModel;
    }

    public OnDeleteListener getOnDeleteListener() {
        return onDeleteListener;
    }

    public void setOnDeleteListener(OnDeleteListener onDeleteListener) {
        this.onDeleteListener = onDeleteListener;
    }
}