Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 基于数据库刷新listview_Android_Sqlite_Listview - Fatal编程技术网

Android 基于数据库刷新listview

Android 基于数据库刷新listview,android,sqlite,listview,Android,Sqlite,Listview,我是android新手,在我的应用程序中,我有一个带有图像、文本视图和按钮的列表视图。当我在列表视图中单击按钮时,特定项目的所有数据都存储到sqlite db和webservice,然后我从webservice获得一个响应字符串,我在sqlite DB的字段中更新了这个字符串。在这里,我需要通过刷新listview将这个字符串设置到listview的按钮中。下面是我的代码 public class MainActivity extends ListActivity implements Regi

我是android新手,在我的应用程序中,我有一个带有图像、文本视图和按钮的列表视图。当我在列表视图中单击按钮时,特定项目的所有数据都存储到sqlite db和webservice,然后我从webservice获得一个响应字符串,我在sqlite DB的字段中更新了这个字符串。在这里,我需要通过刷新listview将这个字符串设置到listview的按钮中。下面是我的代码

public class MainActivity extends ListActivity implements RegisterContactToServer.AsyncResponseListener {
    ListView lv;
    Cursor cursor,cursor1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_contact);

        cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        startManagingCursor(cursor);
        String[] from={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone._ID};
        int[] to={R.id.name_entry,R.id.number_entry};



        ContactList listadapter=new ContactList(this,R.layout.single_row1,cursor,from,to);

        setListAdapter(listadapter);


        lv=getListView();
        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    }

    class ContactList extends SimpleCursorAdapter implements Filterable {

        private Context context;
        String strfromMobileno="";
        private int layout;
        public ContactList(Context context, int layout, Cursor c,
                String[] from, int[] to) {
            super(context, layout, c, from, to);
            this.context=context;
            this.layout=layout;

            // TODO Auto-generated constructor stub

        }


        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {



            final LayoutInflater inflater = LayoutInflater.from(context);
            View v = inflater.inflate(layout, parent, false);


            return v;
        }

       @Override
        public void bindView(View v, final Context context, Cursor c) {

            int nameCol = c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
            String name = c.getString(nameCol);

            int noCol = c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            String no = c.getString(noCol);

         final CheckBox p1 = (CheckBox) v.findViewById(R.id.checkBox1);
            final CheckBox p2 = (CheckBox) v.findViewById(R.id.checkBox2);
            final CheckBox p3 = (CheckBox) v.findViewById(R.id.checkBox3);



            final TextView name_text = (TextView) v.findViewById(R.id.name_entry);
            if (name_text != null) {
                name_text.setText(name);
            }

            final TextView no_text = (TextView) v.findViewById(R.id.number_entry);
            if (no_text != null) {
                no_text.setText(no);
            }

            final Contact contact=new Contact();

            final Button btn=(Button)v.findViewById(R.id.button1);
            btn.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub




                    String contactName = name_text.getText().toString();
                    String contactNo  =no_text.getText().toString();
                    String statusR=btn.getText().toString();



                    contact.setFromMobileno(contactName);
                    contact.setToMobileno(contactNo);

                    if(p1.isChecked()){
                        int priority1=Integer.parseInt(p1.getText().toString());
                        contact.setPriority1(1);
                        }else{contact.setPriority1(0);}

                        if(p2.isChecked())
                        {
                        int priority2=Integer.parseInt(p2.getText().toString());
                        contact.setPriority2(1);
                        }else{contact.setPriority2(0);}

                        if(p3.isChecked()){
                        int priority3=Integer.parseInt(p3.getText().toString());
                        contact.setPriority3(1);
                        }else{contact.setPriority3(0);}
                        contact.setStatus(statusR);

                   if (!contactName.equals("") ){

                       RegisterConactDBAdapter cdbhelper=new RegisterConactDBAdapter(context);
                       cdbhelper.open();
                       cdbhelper.CreateUser(contact);

                     RegisterContactToServer reg=new RegisterContactToServer(context);
                        reg.execute(contact);


                        Intent intent = new Intent(context,ListRefresh.class);
                        startActivity(intent);



                      }

                }
            });



                }


        }


    @Override
    public void onresponse(String status, String jsonData) {
        // TODO Auto-generated method stub
        RegisterConactDBAdapter cdbheler=new RegisterConactDBAdapter(getBaseContext());
        cdbheler.open();
        cdbheler.UpdateStatus(jsonData);
    }
    }

在更新
db
之后,调用方法再次获取
db
,然后调用
yourAdapter.notifyDatasetChanged()
。就是这样^在UI线程中运行它,但我正在更新响应函数中的db。如何在该函数中调用Adapter.notifyDatasetChanged()?在您的情况下使用广播接收器有用吗?