Привет, ребята. У меня проблема при загрузке изображений в Recycleview с помощью Picasso.Я хочу сохранить путь к изображению в БД и показать изображение на recycleview.Когда я использую путь вручную, он работает, но я думаю, что он не сохраняет и не восстанавливает правильно.
selectedImage повторяет как - content://com.android.providers.media.documents/document/image%3A392
getImage повторяет как - /document/image:392
и сохраняет в БД как - /document/image:392
Из адаптера:
public void onBindViewHolder(MyHolder holder, int position) {
holder.notestxt.setText(notes.get(position).getNote());
if (notes.get(position).getImage().trim().length() != 0) {
holder.img1.setVisibility(VISIBLE);
Picasso.get().load(notes.get(position).getImage()).into(holder.img1);
} else {
holder.img1.setVisibility(GONE);
}
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, int pos) {
//OPEN DETAIL ACTIVITY
//PASS DATA
//CREATE INTENT
Intent i = new Intent(c, editnote.class);
//LOAD DATA
i.putExtra("NOTE", notes.get(pos).getNote());
//START ACTIVITY
c.startActivity(i);
}
});
}
И часть задания:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
case R.id.action_image:
ActivityCompat.requestPermissions(addnote.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
getimages();
break;
case R.id.action_save:
if (editable_item.getText().toString().trim().length() != 0) {
save(editable_item.getText().toString(), "");
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
Toast.makeText(getApplicationContext(), "Note saved", Toast.LENGTH_SHORT).show();
} else {
String path = selectedImage.getPath();
save("", path);
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
Toast.makeText(getApplicationContext(), "Image saved", Toast.LENGTH_SHORT).show();
}
break;
case R.id.action_cancel:
Intent x = new Intent(getApplicationContext(), MainActivity.class);
startActivity(x);
finish();
}
return true;
}
private void save(String note, String image) {
DBAdapter db = new DBAdapter(this);
//OPEN
db.openDB();
//INSERT
long result = db.add(note, image);
editable_item.setText("");
//CLOSE
db.close();
}
private void getimages() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Contact Image"), 1);
@Override
protected void onActivityResult ( int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && null != data) {
selectedImage = data.getData();
editable_item.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
Picasso.get().load(selectedImage).into(imageView);
}
}
}