그래서 Firebase에서 검색하는 이미지 문자열 경로가 많습니다. 각 문자열에 대해 Picasso 또는 Glide를 사용하여 이미지를 ImageView에 업로드하고 싶습니다. BUT 내가 무엇을해도 이미지는 절대로드되지 않습니다. 응용 프로그램이 충돌하지 않고 ImageView가 비어 있습니다.Picasso 또는 Glide 라이브러리를 사용하여 이미지 문자열 경로를 ImageView로로드하는 방법은 무엇입니까?
여기 Firebase 데이터베이스에서 쿼리하는 코드입니다.
//Firebase
mRef = new Firebase("https://frontier-e802a.firebaseio.com/");
Firebase cardReference = mRef.child("cards");
cardReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Toast.makeText(getBaseContext(),String.valueOf(dataSnapshot),Toast.LENGTH_SHORT).show();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
CardModel fireBaseCard = dataSnapshot1.getValue(CardModel.class);
testCardModelArray.add(fireBaseCard);
}
/*for(CardModel cardModel : testCardModelArray)
{
Toast.makeText(getBaseContext(),cardModel.getImages().get(cardModel.getImages().size()-1),Toast.LENGTH_SHORT).show();
}*/
setupCards();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
adapter = new SwipeDeckAdapter(testCardModelArray, this);
private void setupCards()
{
testData = new ArrayList<>();
for (int i = 0; i < 10; i++) {
testData.add(String.valueOf(i));
}
adapter = new SwipeDeckAdapter(testCardModelArray, this);
if(cardStack != null)
{
cardStack.setAdapter(adapter);
}
cardStack.setCallback(new SwipeDeck.SwipeDeckCallback() {
@Override
public void cardSwipedLeft(long stableId) {
Log.i("ActivityCenter", "card was swiped left, position in adapter: " + stableId);
}
@Override
public void cardSwipedRight(long stableId) {
Log.i("ActivityCenter", "card was swiped right, position in adapter: " + stableId);
Toast.makeText(getBaseContext(),String.valueOf(stableId),Toast.LENGTH_SHORT).show();
}
@Override
public boolean isDragEnabled(long itemId) {
return dragCheckbox.isChecked();
}
});
cardStack.setLeftImage(R.id.left_image);
cardStack.setRightImage(R.id.right_image);
Button btn = (Button) findViewById(R.id.button_left);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cardStack.swipeTopCardLeft(500);
}
});
Button btn2 = (Button) findViewById(R.id.button_right);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cardStack.swipeTopCardRight(180);
}
});
Button btn3 = (Button) findViewById(R.id.button_center);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// testData.add("a sample string.");
// adapter.notifyDataSetChanged();
cardStack.unSwipeCard();
}
});
}
가 여기에 내가 글라이드를 사용하려고 내 어댑터입니다/피카소와 아무것도 작동합니다. 너무 초조해.
public class SwipeDeckAdapter extends BaseAdapter
{
private List<CardModel> data;
private Context context;
public SwipeDeckAdapter(List<CardModel> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
//No idea how these getItem and getItemId are used.
@Override
public Object getItem(int position)
{
return data.get(position).getCardID();
}
//Not used at all
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null)
{
LayoutInflater inflater = getLayoutInflater();
// normally use a viewholder
v = inflater.inflate(R.layout.test_card2, parent, false);
}
//((TextView) v.findViewById(R.id.textView2)).setText(data.get(position));
ImageView imageView = (ImageView) v.findViewById(R.id.offer_image);
TextView textView = (TextView) v.findViewById(R.id.sample_text);
if(!data.get(position).getImages().isEmpty())
{
Glide.with(context).load(data.get(position).getImages().get(data.get(position).getImages().size()-1)).centerCrop().into(imageView);
String item = data.get(position).getCardName();
textView.setText(item);
}
else
{
Picasso.with(context).load(R.drawable.food).fit().centerCrop().into(imageView);
String item = data.get(position).getCardName();
textView.setText(item);
}
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Layer type: ", Integer.toString(v.getLayerType()));
Log.i("Hardware Accel type:", Integer.toString(View.LAYER_TYPE_HARDWARE));
/*Intent i = new Intent(v.getContext(), BlankActivity.class);
v.getContext().startActivity(i);*/
}
});
return v;
}
}
여러분이 통찰력을 제공 할 수 있기를 바랍니다. 그리고 나는 모든 문자열을 반복하고 토스트 할 수 있었기 때문에 카드를 성공적으로 질의했습니다.
어떤'setUpcard()'방법은 무엇입니까? 그 코드를 게시 할 수 있습니까 –
정말로 파일 경로'data.get (position) .getImages() .get (data.get (position) .getImages(). size() - 1)'??? ... 확인해주십시오. –
setUpCard() 메서드를 입력했습니다. –