我想将图片保存到sqlLite
并阅读并显示在listview
中
保存工作正常(使用blob
)
例如,保存后我的图片为R.drawable.icon
我有byte[]
我以这种方式使用它
Bitmap bm = BitmapFactory.decodeByteArray(img, 0, img.length);
holder.img.setImageBitmap(bm);
它工作正常,但我的列表视图现在工作缓慢。
我试图像这样设置(使用图像而不是数组)
holder.img.setImageResource(R.drawable.icon);
这很好......
因此,当我使用bitmaps
时,它会变慢...任何想法如何向imageView
显示数组?
通知我android:largeHeap="true"
答案 0 :(得分:0)
它运行缓慢,因为每次图像变得可见时,bytearray都会被解码。这会消耗记忆和时间。当您将图像设置为此 'Separate out Product Names
Dim sProd() As String = {}
Dim sInst() As String = {}
Dim sProdList() As String = {"Auto", "Chequing", "GIC", "Mutual Funds", "Real Estate", "RIF", "RSP", "Savings", "Shares", "Stock", "TFSA", "CCard", "Guar", "Loan", "Loc", "Mortgage"}
sProd = objNode.InnerText.Split(",")
objNode = Nothing
objNode = objXMl.SelectSingleNode("//Inst")
sInst = objNode.InnerText.Split(",")
Dim instPos As Integer = 0
For Each st As String In sProdList
If Array.Exists(sProd, Function(x As String) sProdList.Contains(x)) Then
If sInst(instPos) = "PCCU" Then
img = My.Resources.check
ElseIf sInst(instPos) <> "PCCU" OrElse sInst(instPos) = "" Then
img = My.Resources.exclamation
Else
img = My.Resources.redX
End If
dt.Rows.Add(New Object() {st, imageToByteArray(img)})
instPos += 1
End If
Next
dgProduct.DataSource = dt
时,它只会从您的可绘制文件夹中加载不占用内存的图像。你应该尝试创建一个新的线程(可能使用AsyncTask)在后台加载你的图像。这样,您可以滚动列表,并在滚动时将图像加载到后台。