我有一个包含自定义控件的列表视图 我的自定义控件中有进度条,我想要更改进度条的值。
int iRowCount = 0;
CMessage processMessage = null;
for (CMessage msg : m_msgList)
{
iRowCount ++;
if(msg._id == iMessageId)
{
processMessage = msg;
break;
}
}
if(processMessage == null)
return;
if(!processMessage.MessageType.equals(AttachType.Video.name()))
if(!processMessage.MessageType.equals(AttachType.Audio.name()))
return;
int rowPosition = iRowCount;
View v = lstMessage.getChildAt(rowPosition);
View updateView = lstMessage.getAdapter().getView(rowPosition - 1, v, lstMessage);
ILSpeechBubble sBubble = (ILSpeechBubble) updateView.findViewById(R.id.iLSpeechBubble1);
if(sBubble.getMessageId() == iMessageId)
{
iProgress = sBubble.getProgress();
if(iProgress == 100)
m_Downloading = false;
else
iProgress += 1;
sBubble.SetProgress(iProgress);
sBubble.postInvalidate();
updateView.postInvalidate();
}
使用此代码我可以获得必须更改进度值的行
但我不能刷新布局和进度没有改变ui
但是当我滚动列表视图时,进度值发生了变化。!
并且我不想使用notifydatasetchanged()
tnx 4任何帮助
答案 0 :(得分:2)
您可以使用以下代码刷新listview行:
ListView list = getListView();
int start = list.getFirstVisiblePosition();
for(int i=start, j=list.getLastVisiblePosition();i<=j;i++)
if(target==list.getItemAtPosition(i)){
View view = list.getChildAt(i-start);
list.getAdapter().getView(i, view, list);
break;
}
答案 1 :(得分:-2)
用它来清洁适配器:
adapter.items.clear();