static ArrayList<Long> Category_ID = new ArrayList<Long>();
static ArrayList<String> school_name = new ArrayList<String>();
static ArrayList<String> menu_name = new ArrayList<String>();
static ArrayList<String> dish_name = new ArrayList<String>();
static ArrayList<String> day = new ArrayList<String>();
static ArrayList<Long> Vacation_ID = new ArrayList<Long>();
static ArrayList<String> Vacation_name = new ArrayList<String>();
static ArrayList<String> Vacation_Date = new ArrayList<String>();
String mydate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.category_list2);
}
void clearData() {
Category_ID.clear();
school_name.clear();
menu_name.clear();
dish_name.clear();
day.clear();
Vacation_ID.clear();
Vacation_name.clear();
Vacation_Date.clear();
}
public class getDataTask extends AsyncTask<Void, Void, Void> {
getDataTask() {
if (!prgLoading.isShown()) {
prgLoading.setVisibility(0);
txtAlert.setVisibility(8);
}
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
parseJSONData();
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
prgLoading.setVisibility(8);
if ((Category_ID.size() > 0) || IOConnect == 0) {
listCategory.setAdapter(cla);
}
}
}
public void parseJSONData() {
clearData();
SelectMenuAPI = Utils.Schoolmenu + Cat_name + "&lid=" + SchoolLevelId;
zero1check = valll.toString();
URL = SelectMenuAPI;
URL2 = URL.replace(" ", "%20");
SelectMenuAPI2 = Utils.SchoolVacation;
clearData();
URL3 = SelectMenuAPI2;
URL4 = URL3.replace(" ", "%20");
if (zero1check.equals("0"))
byweekdate = Todayday + 1;
else if (zero1check.equals("1")) {
byweekdate = Todayday + 2;
}
try {
Log.i("url",""+URL2);
HttpClient client = new DefaultHttpClient();
HttpConnectionParams
.setConnectionTimeout(client.getParams(), 15000);
HttpConnectionParams.setSoTimeout(client.getParams(), 15000);
HttpUriRequest request = new HttpGet(URL2);
HttpResponse response = client.execute(request);
HttpEntity resEntity = response.getEntity();
_response=EntityUtils.toString(resEntity);
String str2 = "";
str2= _response2;
JSONArray school = json2.getJSONArray("data");
for (int i = 0; i < school.length(); i++) {
JSONObject object = school.getJSONObject(i);
if (count == 1) {
count = 0;
break;
} else
if (object.getString("Schedule").equals("weekly")) {
if (object.getString("day").equals(Todayday)) {
Category_ID.add((long) i);
school_name.add(object.getString("school_name"));
dish_name.add(object.getString("dish_name"));
menu_name.add(object.getString("menu_title"));
day.add(object.getString("day"));
count = count + 1;
String[] mVal = new String[school.length()];
for (int k = 0; k < school.length(); k++) {
mVal[k] = school.getJSONObject(k).getString("menu_title");
message = "weekly";
mVal2 = mVal[0];
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.e01:
new getDataTask().execute();
break;
public class thirdstepAdapter extends BaseAdapter {
private Activity activity;
String[] Main_menu;
public thirdstepAdapter(Activity act) {
this.activity = act;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
// return Main_menu.length;
return thirdstep.Category_ID.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.main_menu_item, null);
holder = new ViewHolder();
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.txtText = (TextView) convertView.findViewById(R.id.txtText);
holder.txtText.setText(thirdstep.dish_name.get(position));
return convertView;
}
static class ViewHolder {
TextView txtText;
}
}
答案 0 :(得分:1)
使用
notifyDataSetChanged();
例如
Arraylist<String> data=new Arraylist<String>();
Mycustum_adaptor adapter = new Mycustum_adaptor (data);
yourlistview.setAdapter(adapter);
第一次设置这样的适配器。例如,如果您将新数据添加到数组列表数据,就像这样。
data.add("newdata");
因此,您需要知道适配器已发生更改,因此请使用 notifyDataSetChanged(); ,如下所示
adapter.notifyDataSetChanged();
这将刷新列表视图并添加新数据。在您添加或删除适配器中的任何数据后,请更改数据集更改。 希望这会对你有所帮助
答案 1 :(得分:0)
您可以在Adapter
上使用notifyDataSetChanged()
,我在您的代码中并未真正看到这一点。
答案 2 :(得分:0)
添加项目或再次删除项目的通过列表到列表适配器
答案 3 :(得分:0)
在列表视图中设置值后,您需要清除getDataTask()
方法中的arraylist。因为你没有清除Arraylist,这是它显示重复值的唯一原因。
@Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub prgLoading.setVisibility(8); if ((Category_ID.size() > 0) || IOConnect == 0) { listCategory.setAdapter(cla); clearData(); }
同时修改您的clearData()
,如下所示:
void clearData() { Category_ID.clear(); Category_ID=null; school_name.clear(); school_name=null; menu_name.clear(); menu_name=null; dish_name.clear(); dish_name=null; day.clear(); day=null; Vacation_ID.clear(); Vacation_ID=null; Vacation_name.clear(); Vacation_name=null; Vacation_Date.clear(); Vacation_Date=null; }