android中的处理程序给出错误
我在代码中使用处理程序在每个特定的时间间隔更新应用程序 为此,我编写了以下代码:android中的处理程序给出错误,android,android-layout,android-intent,Android,Android Layout,Android Intent,我在代码中使用处理程序在每个特定的时间间隔更新应用程序 为此,我编写了以下代码: public class Messages extends Activity { protected Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
public class Messages extends Activity {
protected Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_messages);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
String id = intent.getStringExtra(MainActivity.EXTRA_ID);
String[] lst = null;
ListView lm=(ListView)findViewById(R.id.listView1);
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText("Welcome " + message);
handler.postDelayed(new UpdateTask(),500);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.messages, menu);
return true;
}
class UpdateTask implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
setContentView(R.layout.activity_messages);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
String id = intent.getStringExtra(MainActivity.EXTRA_ID);
String[] lst = null;
ListView lm=(ListView)findViewById(R.id.listView1);
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText("Welcome " + message);
CallSoap cs=new CallSoap();
lst=cs.GetMessage(id);
ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
lm.setAdapter(adpt);
handler.postDelayed(this, 500);
}
}
}
公共类消息扩展活动{
受保护的处理程序=新处理程序();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_消息);
Intent=getIntent();
字符串消息=intent.getStringExtra(MainActivity.EXTRA_消息);
String id=intent.getStringExtra(MainActivity.EXTRA_id);
字符串[]lst=null;
ListView lm=(ListView)findViewById(R.id.listView1);
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText(“欢迎”+信息);
postdayed(newupdateTask(),500);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.messages,menu);
返回true;
}
类UpdateTask实现可运行{
@凌驾
公开募捐{
//TODO自动生成的方法存根
setContentView(R.layout.activity_消息);
Intent=getIntent();
字符串消息=intent.getStringExtra(MainActivity.EXTRA_消息);
String id=intent.getStringExtra(MainActivity.EXTRA_id);
字符串[]lst=null;
ListView lm=(ListView)findViewById(R.id.listView1);
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText(“欢迎”+信息);
CallSoap cs=新的CallSoap();
lst=cs.GetMessage(id);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple_list_item_1,lst);
lm.设置适配器(adpt);
handler.postDelayed(这个,500);
}
}
}
但这给了我一个错误:
ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);
文本:构造函数数组适配器未定义。
请帮助我。将构造函数中的“this”引用与ActivityName.this关联
改变
ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);
到
ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple\u list\u item\u 1,lst);
应该有用
也就是说,如果您只希望定期更新,那么不需要一直调用上面的代码
相反,只需调用adapter.notifyDataSetChanged()代码>应该做这项工作 将构造函数中的“this”引用与ActivityName.this关联
ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst);
改变
ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);
到
ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple\u list\u item\u 1,lst);
应该有用
也就是说,如果您只希望定期更新,那么不需要一直调用上面的代码
相反,只需调用adapter.notifyDataSetChanged()代码>应该做这项工作 ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple\u list\u item\u 1,lst);
ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst);
但我不明白你为什么把这些都放在一个处理器里
对于同一个设计不好的活动,我还看到了两次setContentView
如果需要更新listview,请更新填充listview的基础数据,并在适配器上调用notifyDataSetchanged
另外,setContentView
和每次初始化视图都不是一个好主意adArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple_list_item_1,lst);
但我不明白你为什么把这些都放在一个处理器里
对于同一个设计不好的活动,我还看到了两次setContentView
如果需要更新listview,请更新填充listview的基础数据,并在适配器上调用notifyDataSetchanged
另外,setContentView
和每次初始化视图都不是一个好主意,您应该改变这一点
ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);
借
ArrayAdapter adpt=newarrayadapter(YourActivity.this,android.R.layout.simple\u list\u item\u 1,lst);
您应该更改此选项
ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);
借
ArrayAdapter adpt=newarrayadapter(YourActivity.this,android.R.layout.simple\u list\u item\u 1,lst);
我想在每次指定的时间间隔后刷新或重新执行此代码why@NavatKayAahe你所做的对我来说不是一个好的设计我该怎么做,我对这个很陌生,请告诉我。是的,我刚刚测试了它,它对我很有用。除了代码设计,我会在我的app@NavatKayAahe但即使它起作用,如果您需要更新lsitview,那么您所做的并不是一个好方法。只需更新填充lsitview的基础数据,并在适配器上调用notifDataSetChanged
,无需每次都setContentView
和初始化视图。每次刷新或在特定时间间隔后重新执行此代码时why@NavatKayAahe在我看来,你所做的不是一个好的设计我该怎么办,我对这个很陌生,plz guid me.yup,我刚刚测试过,它对我有用。除了代码设计,我会在我的app@NavatKayAahe但即使它起作用,如果您需要更新lsitview,那么您所做的并不是一个好方法。只需更新填充lsitview的基础数据,并在您的计算机上调用notifDataSetChanged