问题描述
|
搜索有关此特定问题的更多信息后,我尝试在此处询问是否有人提供了解决方案。
我正在尝试开发一个Android应用程序,以便在列表视图中显示一些事件,并在今天和事件的日期之间使用倒数计时器。
我在列表视图上放置了一个“ onItemClickListener \”,以询问用户是否要将事件添加到列表中。
这是倒计时代码:
while (countdownActive) {
countdownThread = new Thread(new Runnable() {
@Override
public synchronized void run() {
try {
this.wait(300);
handler.sendEmptyMessage(3);
} catch (InterruptedException e) {
Log.d(\"CKUne\",e.getMessage());
}
}
});
countdownThread.start();
问题是当我单击一个项目时,对话框并不总是显示。有时(可能是因为主线程具有焦点),有时则没有(当countDown线程具有焦点时)。
希望您有停止另一个线程的解决方案。
谢谢
@Geo:这是对话框的机制:
eventsListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent,View view,final int position,long id) {
ckPosition = position;
new addCKTask().execute(null,null,null);
}
});
addCKTask:
private class addCKTask extends AsyncTask<URL,Integer,Long> {
@Override
protected Long doInBackground(URL... params) {
Log.d(\"CKUne\",\"itemclick\");
handler.sendEmptyMessage(5);
handler.sendEmptyMessage(4);
handler.sendEmptyMessage(2);
return null;
}
}
然后处理程序:
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case 1 :
findViewById(R.id.loadCategoriesProgress).setVisibility(View.VISIBLE);
title.setText(categoriesName[indexCategorie].getLibelleCategorie());
break;
case 2 :
eventsListView.setAdapter(adapter);
countdownActive = true;
cdTask = new startCountDown();
cdTask.execute(null,null);
findViewById(R.id.loadCategoriesProgress).setVisibility(View.INVISIBLE);
break;
case 3 :
Thread.currentThread().interrupt();
adapter.notifyDataSetChanged();
break;
case 4 :
countdownThread.interrupt();
stopCountDown();
AlertDialog.Builder loginAlert = new AlertDialog.Builder(CKALaUne.this);
loginAlert.setMessage(\"Voulez-vous ajouter \" + events.get(ckPosition).getNomCK() + \"à votre liste ?\");
loginAlert.setPositiveButton(\"Ajouter\",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
chronokifWebServices.AddToMyChronokifs(CKALaUne.this.getIntent().getExtras().getString(\"pseudonyme\"),CKALaUne.this.getIntent().getExtras().getString(\"password\"),(events.get(ckPosition).getIdCK() + \"\"));
}
});
loginAlert.setNegativeButton(\"Annuler\",int id) {
dialog.cancel();
}
});
loginAlert.show();
break;
case 5 :
stopCountDown();
break;
}
}
};
刚开始时,我只使用线程和处理程序,但是由于错误的结果,我尝试了AsyncTask,但给出了相同的结果:单击时,单击不起作用的可能性也很大。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)