Android 无法解析notifyDatasetChanged符号
我正在使用一个应用程序,在该应用程序中,我从azure数据库中获取记录并将其插入数组中,Android 无法解析notifyDatasetChanged符号,android,arrays,listview,azure-sql-database,notifydatasetchanged,Android,Arrays,Listview,Azure Sql Database,Notifydatasetchanged,我正在使用一个应用程序,在该应用程序中,我从azure数据库中获取记录并将其插入数组中,listview必须显示我的数组。当我尝试调用方法notifyDatasetChanged时出现错误,下面是我的代码: Button search; EditText Esearch; ListView list; BaseAdapter ADAhere; Connection connect; List<Map<String,String>> MyData = new Ar
listview
必须显示我的数组。当我尝试调用方法notifyDatasetChanged
时出现错误,下面是我的代码:
Button search;
EditText Esearch;
ListView list;
BaseAdapter ADAhere;
Connection connect;
List<Map<String,String>> MyData = new ArrayList();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.srail, container, false);
search = (Button)rootView.findViewById(R.id.btnSearch);
Esearch = (EditText)rootView.findViewById(R.id.srch);
list = (ListView)rootView.findViewById(R.id.view);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckLogin checkLogin = new CheckLogin();
checkLogin.execute("");
String[] fromwhere = { "NAME","PRICE","RANGE","SUPPLIER","SIZE" };
int[] viewswhere = {R.id.Name_txtView , R.id.price_txtView,R.id.Range_txtView,R.id.size_txtView,R.id.supplier_txtView};
ADAhere = new SimpleAdapter(getActivity(), MyData,R.layout.list_products, fromwhere, viewswhere);
list.setAdapter(ADAhere);
}
});
return rootView;
}
public class CheckLogin extends AsyncTask<String, String, String> {
String z = "";
Boolean isSuccess = false;
ProgressDialog progress;
@Override
protected void onPreExecute() {
progress = ProgressDialog.show(getActivity(), "Searching...",
"Listview Loading! Please Wait...", true);
}
@Override
protected void onPostExecute(String r) {
progress.dismiss();
Toast.makeText(getActivity(), r, Toast.LENGTH_SHORT).show();
if (isSuccess) {
Toast.makeText(getActivity(), "Search Successfull", Toast.LENGTH_LONG).show();
//finish();
}
}
@Override
protected String doInBackground(String... strings) {
String Search = search.getText().toString();
try {
ConnectionHelper conStr = new ConnectionHelper();
connect = conStr.connectionclass(); // Connect to database
if (connect == null) {
z = "Check Your Internet Access!";
} else {
// Change below query according to your own database.
String query = "select * from cc_rail where rail_name='" + Search.toString() +"' ";
Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
Map<String, String> datanum = new HashMap<String, String>();
datanum.put("NAME", rs.getString("RAIL_NAME"));
datanum.put("PRICE", rs.getString("RAIL_UNIT_PRICE"));
datanum.put("RANGE", rs.getString("RAIL_RANGE"));
datanum.put("SUPPLIER", rs.getString("RAIL_SUPPLIER"));
datanum.put("SIZE", rs.getString("RAIL_SIZE"));
MyData.add(datanum);
}
ADAhere.notifyDatasetChanged();
z = " successful";
isSuccess = true;
connect.close();
}
} catch (Exception ex) {
isSuccess = false;
z = ex.getMessage();
}
return z;
}
}
按钮搜索;
编辑文本搜索;
列表视图列表;
在这里的基地;
连接;
List MyData=new ArrayList();
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.srail,container,false);
search=(按钮)rootView.findviewbyd(R.id.btnSearch);
Esearch=(EditText)rootView.findviewbyd(R.id.srch);
list=(ListView)rootView.findViewById(R.id.view);
search.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
CheckLogin CheckLogin=新建CheckLogin();
checkLogin.execute(“”);
字符串[]fromwhere={“名称”、“价格”、“范围”、“供应商”、“大小”};
int[]viewswhere={R.id.Name\u txtView,R.id.price\u txtView,R.id.Range\u txtView,R.id.size\u txtView,R.id.supplier\u txtView};
ADAhere=new simpledapter(getActivity(),MyData,R.layout.list_products,fromwhere,viewswhere);
list.setAdapter(ADAhere);
}
});
返回rootView;
}
公共类CheckLogin扩展异步任务{
字符串z=“”;
布尔值isSuccess=false;
进程对话进程;
@凌驾
受保护的void onPreExecute(){
progress=ProgressDialog.show(getActivity(),“搜索…”,
“正在加载Listview!请稍候…”,true);
}
@凌驾
受保护的void onPostExecute(字符串r){
进步。解散();
Toast.makeText(getActivity(),r,Toast.LENGTH_SHORT).show();
如果(isSuccess){
Toast.makeText(getActivity(),“搜索成功”,Toast.LENGTH_LONG.show();
//完成();
}
}
@凌驾
受保护的字符串背景(字符串…字符串){
字符串搜索=Search.getText().toString();
试一试{
ConnectionHelper conStr=新的ConnectionHelper();
connect=conStr.connectionclass();//连接到数据库
if(connect==null){
z=“检查您的互联网接入!”;
}否则{
//根据您自己的数据库更改以下查询。
String query=“从cc_rail中选择*,其中rail_name=”+Search.toString()+”;
语句stmt=connect.createStatement();
ResultSet rs=stmt.executeQuery(查询);
while(rs.next()){
Map datanum=new HashMap();
datanum.put(“NAME”,rs.getString(“RAIL_NAME”);
datanum.put(“价格”,rs.getString(“铁路单价”);
datanum.put(“RANGE”,rs.getString(“RAIL_RANGE”);
datanum.put(“供应商”,rs.getString(“铁路供应商”);
datanum.put(“大小”,rs.getString(“轨道大小”);
添加(datanum);
}
ADAhere.notifyDatasetChanged();
z=“成功”;
isSuccess=true;
connect.close();
}
}捕获(例外情况除外){
isSuccess=false;
z=ex.getMessage();
}
返回z;
}
}
错误出现在代码的这一部分:
String query = "select * from cc_rail where rail_name='" + Search.toString() +"' ";
Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
Map<String, String> datanum = new HashMap<String, String>();
datanum.put("NAME", rs.getString("RAIL_NAME"));
datanum.put("PRICE", rs.getString("RAIL_UNIT_PRICE"));
datanum.put("RANGE", rs.getString("RAIL_RANGE"));
datanum.put("SUPPLIER", rs.getString("RAIL_SUPPLIER"));
datanum.put("SIZE", rs.getString("RAIL_SIZE"));
MyData.add(datanum);
}
ADAhere.notifyDatasetChanged();
String query=“select*from cc_rail where rail_name=”+Search.toString()+”;
语句stmt=connect.createStatement();
ResultSet rs=stmt.executeQuery(查询);
while(rs.next()){
Map datanum=new HashMap();
datanum.put(“NAME”,rs.getString(“RAIL_NAME”);
datanum.put(“价格”,rs.getString(“铁路单价”);
datanum.put(“RANGE”,rs.getString(“RAIL_RANGE”);
datanum.put(“供应商”,rs.getString(“铁路供应商”);
datanum.put(“大小”,rs.getString(“轨道大小”);
添加(datanum);
}
ADAhere.notifyDatasetChanged();
写入
ADAhere.notifyDataSetChanged()代码>
而不是
ADAhere.notifyDatasetChanged()代码>
你写的是小的s
,而不是s
在onPostExecute
中编写此代码比在doInBackground
中编写此代码更好。您的问题在于编写方法名称的方式(您在集合中使用了一个小s),因此它无法识别它是正常的
换行
ADAhere.notifyDatasetChanged();
与
您已创建BaseAdapter并尝试通知适配器。创建一个ADAhere对象作为扩展BaseAdapter的SimpleAdaptererror@JyotiJK它告诉我无法解析symbolnotifyDatasetChanged
在UI线程ADAhere.notifyDatasetChanged()中调用此错误代码>并在执行异步任务之前对其进行初始化是的,您不能从异步任务调用此方法。将ResultSet
返回到onPostExecute()
并调用ADAhere.notifyDatasetChanged()代码>从那里开始。
ADAhere.notifyDataSetChanged();