由于ListView中的项目内容有点复杂,我的ListView需要几秒钟才能滚动到特定项目。所以我想添加一个Indeterminate进度条以使其顺利进行。
要滚动到特定项目,我使用listView.setSelection(n)来执行此操作。然后我倾向于使用“setOnItemSelectedListener”事件处理程序在滚动后隐藏进度条。但是事件处理程序没有得到调用。
可能是我的概念完全错了,我不知道该怎么做(进度条使用像这种情况)。如果你向我展示这个概念,也欢迎更多细节。
非常感谢。
public class ListViewAdapter extends BaseAdapter {
private ProgressBar progressBar;
private Handler progressBarHandler = new Handler();
boolean isProgressBarDone;
private void jumpToSelectedItem(View arg0) {
...
listView.setSelection(selectedDaYunItem);
}
ListView listView = (ListView)((MyActivity)cellView.getContext()).findViewById(R.id.listview);
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// onItemSelected event handler has not triggered.
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
isProgressBarDone = true;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
public class LiouYunCellAdapter {
cellView.setOnTouchListener(new View.OnTouchListener() {
// It takes a little seconds to operate.
private void jumpToSelectedItem(View arg0) {
....
}
@Override
public boolean onTouch(View arg0, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
progressBar = findProgressBar(arg0);
// ProgressBar start.
new Thread(new Runnable() {
public void run() {
isProgressBarDone = false;
while (!isProgressBarDone) {
// Update the progress bar
progressBarHandler.post(new Runnable() {
public void run() {
progressBar.setVisibility(View.VISIBLE);
}
}
});
}
}).start();
jumpToSelectedItem(arg0);
}
}
return true;
}
});
// End setOnTouchListener().
}
// end class LiouYunCellAdapter.
}
答案 0 :(得分:0)
好吧,我没有看到你触发任何onclick excpet将isProgressBarDone设置为true。你需要做的是使用下面的fomat(你已经拥有),但是让你的代码在那里滚动。单击,您将获得所选内容的位置。使用该ID然后触发滚动。您还应该在此处启动进度条,并在该方法结束时结束它。现在你的进度条在它自己的线程上运行,我没有看到任何阻止它的东西。
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
//You will get the positino of the item clicked here
//This is where your code to scroll should go as well as
//starting the progress bar
}
});
看一下我链接到下面的例子。它处理在加载自定义列表视图时使用progressdialog但我认为该概念适用于您的代码。您需要做的是在调用进度条并解除它时修复。
http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/