У меня проблема с l oop: я использую для , чтобы получить доступ к различным файлам, хранящимся в firebase, получить URL каждого файла, дать им имя, затем показать их в listview. Проблема здесь в параметре l oop, который изменяет значение, выбрасывая новый метод:
- перед getDownloadUrl метод, он отлично работает
- внутри метода значение k всегда равно 3
код:
public class PDFActivity extends AppCompatActivity {
public static StorageReference StorageRef;
Button Download;
TextView Url;
public static ListView listView;
static int nombrerapport;
public static String[] RapportsNames;
public String zone;
Uri downloadUrl;
public DatabaseReference Databasezone;
public static ArrayList<RapportInfo> RapportList;
public String url;
private static int k ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Databasezone = FirebaseDatabase.getInstance().getReference();
RapportList = new ArrayList<RapportInfo>();
RapportsNames = new String[2];
setContentView(R.layout.activity_pdf);
listView = findViewById(R.id.listVieww);
Databasezone.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
Upload Valeurs = dataSnapshot.child("Users").child(FirebaseAuth.getInstance().getUid()).getValue(Upload.class);
zone = Valeurs.getmZone();
String value = (String) dataSnapshot.child("Messages/Test/Nombre_rapport").getValue();
nombrerapport = Integer.parseInt(value);
for(k=1;k<=2;k++){
StorageRef = FirebaseStorage.getInstance().getReferenceFromUrl("gs://2bf33.appspot.com/files/Rapport_Client"+String.valueOf(k)+".pdf");
Toast.makeText(PDFActivity.this, ""+k+"", Toast.LENGTH_SHORT).show();
StorageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Toast.makeText(PDFActivity.this, ""+k+"", Toast.LENGTH_SHORT).show();
downloadUrl = uri;
url = String.valueOf(downloadUrl);
Toast.makeText(PDFActivity.this, ""+url+"", Toast.LENGTH_SHORT).show();
RapportList.add(new RapportInfo("Rapport"+ String.valueOf(k)+ "", url));
RapportsNames[0] = RapportList.get(0).getName();
// Toast.makeText(PDFActivity.this, ""+RapportsNames[0]+"", Toast.LENGTH_SHORT).show();
/** if(i==nombrerapport) {
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, RapportsNames) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Cast the list view each item as text view
TextView item = (TextView) super.getView(position, convertView, parent);
// Set the list view item's text color
item.setTextColor(Color.parseColor("#000000"));
// Change the item text size
item.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
// return the view
return item;
}
};
listView.setAdapter(arrayAdapter);
}**/
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RapportInfo upload = RapportList.get(position);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(upload.getUrl()));
startActivity(intent);
}
});
}
//}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
}); }
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}