我的列表视图不刷新怎么每次都显示新价值 [英] my listview not refresh how to show new values every time

查看:197
本文介绍了我的列表视图不刷新怎么每次都显示新价值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里面的功能列表视图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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆