gpt4 book ai didi

java - 如何使用 Java 从解析服务器加载存储为文件的图像并将其显示到 Android-Studio 中的自定义 ListView?

转载 作者:行者123 更新时间:2023-12-02 04:25:34 27 4
gpt4 key购买 nike

我需要帮助加载作为文件存储在解析服务器上的图像并将其显示在 listView 中

我有一些图像作为文件存储在解析服务器上,我发现它们在名称(字符串)旁边使用解析查询,并且我将它们显示在自定义 ListView 中,名称正确显示在列表上,但图像被打乱,可能是因为首先加载的图像索引较低。

自定义列表适配器:

package com.xyz.abcd;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;


public class ListAdapter extends BaseAdapter {

Context context;
private final String [] values;
private final Bitmap[] images;

public ListAdapter(Context context, String [] values, Bitmap [] images){
//super(context, R.layout.single_list_app_item, utilsArrayList);
this.context = context;
this.values = values;
this.images = images;
}

@Override
public int getCount() {
return values.length;
}

@Override
public Object getItem(int i) {
return i;
}

@Override
public long getItemId(int i) {
return i;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {


ViewHolder viewHolder;

final View result;

if (convertView == null) {

viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.custom_list, parent, false);
viewHolder.txtName = (TextView) convertView.findViewById(R.id.aNametxt);
viewHolder.icon = (ImageView) convertView.findViewById(R.id.appIconIV);

result=convertView;

convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
result=convertView;
}

viewHolder.txtName.setText(values[position]);
try {
viewHolder.icon.setImageBitmap(images[position]);
}catch (Exception e){
e.printStackTrace();
}

return convertView;
}

private static class ViewHolder {

TextView txtName;
ImageView icon;

}

}

<小时/>

这是查询:

ParseQuery query = new ParseQuery("userData");
query.whereContains("Name",queryValues[0]);
query.whereEqualTo("Gender",queryValues[1]);
query.whereContains("Hair",queryValues[2]);
query.whereContains("Eyes",queryValues[3]);
query.whereContains("Height",queryValues[4]);
query.whereNotEqualTo("Username", ParseUser.getCurrentUser().getUsername());
query.addAscendingOrder("Name");

query.findInBackground(new FindCallback() {
@Override
public void done(List list, ParseException e) {

}

@Override
public void done(Object o, Throwable throwable) {
if(throwable == null){

List <ParseObject> list = (List<ParseObject>) o ;

for(ParseObject object : list){
username.add( object.getString("Username"));
name.add(object.getString("Name"));
age.add(object.getInt("Age"));
facebook.add(object.getString("Facebook"));
instagram.add(object.getString("Instagram"));
snapchat.add(object.getString("Snapchat"));
whatsapp.add(object.getString("Whatsapp"));
heat.add(object.getInt("Heat"));
sem.add(object.getString("Sem")) ;
likes.add(object.getInt("Like")) ;

ParseFile file = object.getParseFile("ProfilePicture");
file.getDataInBackground(new GetDataCallback() {
@Override
public void done(byte[] bytes, ParseException e) {
if(e == null && bytes != null){
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length); // image is downloaded here
images.add(bitmap); // added to arrayList

String[] NAMES = new String[name.size()];
NAMES = name.toArray(NAMES);

Bitmap[] IMAGES = new Bitmap[images.size()];
IMAGES = images.toArray(IMAGES); //ArrayList is converted to a Bitmap array

lAdapter = new ListAdapter(searchResults.this, NAMES, IMAGES); //names and images array is passed to adapter as arrays

ResultsList.setAdapter(lAdapter); //adapter is set

myInstance.dismiss(); //Loading bar dismisses

}else{
Log.i("Error",e.toString());
}
}
});

}


}else{
Toast.makeText(searchResults.this, "Check connection", Toast.LENGTH_SHORT).show();
myInstance.dismiss();
}
}
});

如何让列表按顺序正确显示,并且图像位于这些位置。

最佳答案

解决方案:使用glide库异步加载图像并按顺序加载到UI

关于java - 如何使用 Java 从解析服务器加载存储为文件的图像并将其显示到 Android-Studio 中的自定义 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56609323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com