首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gridview setNotifiedDataSetChanged()没有顺利更新gridview吗?

gridview setNotifiedDataSetChanged()没有顺利更新gridview吗?
EN

Stack Overflow用户
提问于 2011-08-18 14:03:03
回答 1查看 1.2K关注 0票数 1

我试图平滑地更新网格视图的背景颜色,但它并不能正常工作。当我浏览gridview时,它发生了变化;请指导我怎么做,下面是我的代码,谢谢。

代码语言:javascript
复制
TableGridViewAdapter gridadapter;
 GridView gridview;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 

            textViewUname = (TextView) this.findViewById(R.id.userName);
            textViewUname.setText("Welcome , " + HomeActivity.name);

             gridview = (GridView) findViewById(R.id.gridview);
             gridadapter=new TableGridViewAdapter(this);
             gridview.setAdapter(gridadapter);
            //adapter.notifyDataSetChanged();            

             UpdateGridview updateGridview=new UpdateGridview();
             updateGridview.execute(TableActivity.this);



            // code for onClick gridview items , It take to that Activity
            gridview.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {
                    ConText.currentPos = position;
                    Intent i = new Intent(TableActivity.this,
                            OrderListActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                            | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                    finish();

                }

            });
        } 
    }

}

这里我试着每隔20秒刷新一次视图

代码语言:javascript
复制
  private class UpdateGridview extends AsyncTask<Context, Integer, String>
       {    
        @Override
        protected String doInBackground( Context... params ) 
        {

                int i = 0;
                while( i <10) 
                {
                        try{

                               gridadapter.notifyDataSetChanged();
                              // gridadapter.refreshItems(gridadapter);
                               gridview.invalidate();

                              //TableGridViewAdapter.refreshItems(gridadapter);
                               Thread.sleep( 20000 );
                               System.out.println("i  called notifyDataSetChanged()=======================");
                                i++;
                        } catch( Exception e ){
                                Log.i("makemachine", e.getMessage() );
                        }
                }
                return "COMPLETE!";
        }

// -- gets called just before thread begins
        @Override
        protected void onPreExecute() 
        {
                Log.i( "makemachine", "onPreExecute()" );
                super.onPreExecute();

        }


        @Override
        protected void onProgressUpdate(Integer... values) 
        {
                super.onProgressUpdate(values);

        }

        // -- called if the cancel button is pressed
        @Override
        protected void onCancelled()
        {
                super.onCancelled();
               Log.i( "makemachine", "onCancelled()" );

        }

        // -- called as soon as doInBackground method completes
        // -- notice that the third param gets passed to this method
        @Override
        protected void onPostExecute( String result ) 
        {
                super.onPostExecute(result);
                Log.i( "makemachine", "onPostExecute(): " + result );

        }

}

}

EN

回答 1

Stack Overflow用户

发布于 2011-08-18 14:17:15

试着这样做:

代码语言:javascript
复制
private final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if(msg.arg1 == 1){
                gridadapter.notifyDataSetChanged();
            }
        }   
   };



private class UpdateGridview extends AsyncTask<Context, Integer, String>
       {    
        @Override
        protected String doInBackground( Context... params ) 
        {

                int i = 0;
                while( i <10) 
                {
                        try{

                              // gridadapter.notifyDataSetChanged();
                              // gridadapter.refreshItems(gridadapter);
                               //gridview.invalidate();
                                 Message msg = handler.obtainMessage();
                                 msg.arg1 = 1;
                                 handler.sendMessage(msg);
                              //TableGridViewAdapter.refreshItems(gridadapter);
                               Thread.sleep( 20000 );
                               System.out.println("i  called notifyDataSetChanged()=======================");
                                i++;
                        } catch( Exception e ){
                                Log.i("makemachine", e.getMessage() );
                        }
                }
                return "COMPLETE!";
        }

// -- gets called just before thread begins
        @Override
        protected void onPreExecute() 
        {
                Log.i( "makemachine", "onPreExecute()" );
                super.onPreExecute();

        }


        @Override
        protected void onProgressUpdate(Integer... values) 
        {
                super.onProgressUpdate(values);

        }

        // -- called if the cancel button is pressed
        @Override
        protected void onCancelled()
        {
                super.onCancelled();
               Log.i( "makemachine", "onCancelled()" );

        }

        // -- called as soon as doInBackground method completes
        // -- notice that the third param gets passed to this method
        @Override
        protected void onPostExecute( String result ) 
        {
                super.onPostExecute(result);
                Log.i( "makemachine", "onPostExecute(): " + result );

        }
}

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7103058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档