我的列表视图不刷新怎么每次都显示新价值 [英] my listview not refresh how to show new values every time
问题描述
这里面的功能列表视图IM插入ArrayList的CAL的背景,但问题的功能是,如果我点击按钮列表视图显示重复的值多次如何刷新或限制列表视图,只显示当前值每一个按钮,点击全部删除previous? ??
按钮E01;
静态的ArrayList<龙> CATEGORY_ID =新的ArrayList<龙>();
静态的ArrayList<串GT; school_name =新的ArrayList<串GT;();
静态的ArrayList<串GT; MENU_NAME =新的ArrayList<串GT;();静态的ArrayList<串GT; dish_name =新的ArrayList<串GT;();
静态的ArrayList<串GT;天=新的ArrayList<串GT;();静态的ArrayList<龙> Vacation_ID =新的ArrayList<龙>();
静态的ArrayList<串GT; Vacation_name =新的ArrayList<串GT;();
静态的ArrayList<串GT; Vacation_Date =新的ArrayList<串GT;();串数值指明MyDate;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.category_list2);
} 无效clearData(){ Category_ID.clear();
school_name.clear();
menu_name.clear();
dish_name.clear();
day.clear(); Vacation_ID.clear();
Vacation_name.clear();
Vacation_Date.clear();} 公共类getDataTask扩展的AsyncTask<太虚,太虚,太虚> { getDataTask(){
如果(!prgLoading.isShown()){
prgLoading.setVisibility(0);
txtAlert.setVisibility(8); }
} @覆盖
在preExecute保护无效(){
// TODO自动生成方法存根 } @覆盖
保护无效doInBackground(虚空......为arg0){
// TODO自动生成方法存根
parseJSONData();
返回null;
} @覆盖
保护无效onPostExecute(虚空结果){
// TODO自动生成方法存根
prgLoading.setVisibility(8); 如果((Category_ID.size()大于0)|| IOConnect == 0){ listCategory.setAdapter(CLA); }
}
}
公共无效parseJSONData(){
clearData();
SelectMenuAPI = Utils.Schoolmenu + Cat_name +与&盖=+ SchoolLevelId;
zero1check = valll.toString();
URL = SelectMenuAPI;
URL2 = URL.replace(,%20); SelectMenuAPI2 = Utils.SchoolVacation; clearData();
URL3 = SelectMenuAPI2;
URL4 = URL3.replace(,%20); 如果(zero1check.equals(0))
byweekdate = Todayday + 1;
否则如果(zero1check.equals(1)){
byweekdate = Todayday + 2; } 尝试{ Log.i(URL,+ URL2); HttpClient的客户端=新DefaultHttpClient();
HttpConnectionParams
.setConnectionTimeout(client.getParams(),15000);
HttpConnectionParams.setSoTimeout(client.getParams(),15000);
HttpUriRequest要求=新HTTPGET(URL2);
HTT presponse响应= client.execute(请求); HttpEntity resEntity = response.getEntity();
_response = EntityUtils.toString(resEntity);
字符串str2的=;
STR2 = _response2; JSONArray学校= json2.getJSONArray(数据); 的for(int i = 0; I< school.length();我++){
的JSONObject对象= school.getJSONObject(I)
如果(计数== 1){
计数= 0;
打破;
}其他 如果(object.getString(计划)。等于(周刊)){ 如果(object.getString(天)。等于(Todayday)){
Category_ID.add((长)一);
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(天));
数=计+ 1;的String [] = MVAL新的String [school.length()]; 对于(INT K = 0; K< school.length(); K ++){
MVAL [K] = school.getJSONObject(k)的.getString(menu_title);
消息=周末画报;
MVAL2 = MVAL [0]; }@覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
开关(v.getId()){ 案例R.id.e01:
新getDataTask()执行(); 打破; 公共类thirdstepAdapter延伸BaseAdapter { 私人活动活动;的String [] MAIN_MENU;公共thirdstepAdapter(活动行为){
this.activity =行为;}
@覆盖
公众诠释的getCount(){
// TODO自动生成方法存根
//返回Main_menu.length;
返回thirdstep.Category_ID.size();
}
@覆盖
公共对象的getItem(INT位置){
// TODO自动生成方法存根
返回的位置;
}众长getItemId(INT位置){
// TODO自动生成方法存根
返回的位置;
}公共查看getView(INT位置,查看convertView,父母的ViewGroup){
// TODO自动生成方法存根
ViewHolder持有人; 如果(convertView == NULL){
LayoutInflater吹气=(LayoutInflater)活动
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.main_menu_item,NULL);
持有人=新ViewHolder(); convertView.setTag(保持器);
}其他{
支架=(ViewHolder)convertView.getTag();
} holder.txtText =(TextView中)convertView.findViewById(R.id.txtText); holder.txtText.setText(thirdstep.dish_name.get(位置)); 返回convertView;
}静态类ViewHolder {
TextView的txtText;
} }
使用
notifyDataSetChanged();
块引用>例如
的ArrayList<串GT;数据=新的ArrayList<串GT;();
Mycustum_adaptor适配器=新Mycustum_adaptor(数据); yourlistview.setAdapter(适配器);设置适配器这样的第一次。而对于例如,如果你添加新的数据到数组列表中的数据是这样的。
data.add(newdata);
所以,你适配器需要知道变化会发生如此使用 notifyDataSetChanged(); 像下面
adapter.notifyDataSetChanged();
用新数据added.Notify数据集更改后ü添加或适配器你删除任何数据这将刷新列表视图。
希望这将帮助你。im insert arraylist on listview inside function cal that function on background but problem is if i click multiple times on button listview show duplicate values how to refresh or restrict listview to show only current values every button click remove all previous??? Button e01;
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; } }
解决方案Use
notifyDataSetChanged();
For example
Arraylist<String> data=new Arraylist<String>(); Mycustum_adaptor adapter = new Mycustum_adaptor (data); yourlistview.setAdapter(adapter);
Set adaptor like this on the first time. And for example if you add a new data to array list data like this.
data.add("newdata");
So you Adapter need to know A change has occur so use notifyDataSetChanged(); like below
adapter.notifyDataSetChanged();
This will Refresh the list view with new data added.Notify the data set change after u add or remove any data from you adaptor. Hope this will help you
这篇关于我的列表视图不刷新怎么每次都显示新价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!