使用RecyclerView显示来自Parse.com的多个图像只显示我的三个图像之一

时间:2015-09-15 19:24:59

标签: android image parse-platform android-recyclerview recycler-adapter

我有三个图像存储在一个名为:" events"和表格栏名为:" image"在Parse.com上

我使用两个查询1来处理图像的显示,一个用于获取另一个表的信息(这些都是字符串)

问题是: 我用于获取所有图像的查询仅显示RecyclerView中的三个图像中的一个而不是全部三个。

如何在RecyclerView中显示来自Parse.com的所有三张图片?

我的主要活动:

public class MainActivity extends Activity {



//Defining Variables
protected Toolbar toolbar;
protected NavigationView navigationView;
private DrawerLayout drawerLayout;
protected Button mButtonHeader;
protected TextView mDayOfTheWeek;
protected TextView mDate;
//protected Context context;
//private long pageId = 137317903012386L;

private RecyclerView mRecyclerView;

//New Variables
private CustomAdapter mAdapter;


//Weather variables
//private ImageView weatherIconImageView;
private TextView temperatureTextView;
private TextView conditionTextView;
private TextView locationTextView;


private ProgressDialog dialog;
private ProgressDialog progressDialog;


final List<Information> data = new ArrayList<>();



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //RecyclerView with Parse
    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view_layout);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mAdapter = new CustomAdapter(getApplicationContext(), data);





    //The Query i used to get the three images

    ParseQuery<ParseObject> queryImgs = new ParseQuery<ParseObject>    ("events");
    //queryImgs.orderByAscending("order");
    //queryImgs.setLimit(10);
    queryImgs.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(final List<ParseObject> objects, ParseException e) {
            //for (ParseObject obj_food : objects) {
                //if (obj_food.getInt("order") == order) {

            for (int i = 0; i < objects.size(); i++) {
                    //final ParseFile file = obj_food.getParseFile("image");
                //Information information = new Information();
                //information.mEventsPhotoID = objects.get(i).getParseFile("image");

                final ParseFile file = objects.get(i).getParseFile("image");

                    //bitmap
                    file.getDataInBackground(new GetDataCallback() {
                        public void done(byte[] data, ParseException e) {
                            if (e == null) {
                                Bitmap bmp = BitmapFactory
                                        .decodeByteArray(
                                                data, 0,
                                                data.length);

                                // Get the ImageView from
                                // main.xml

                                mEventsPhotoID = (ParseImageView) findViewById(R.id.eventsPhotoID);
                                //mEventsPhotoIDTwo = (ParseImageView)findViewById(R.id.eventsPhotoID);

                                // Set the Bitmap into the
                                // ImageView
                                mEventsPhotoID.setImageBitmap(bmp);
                                //mEventsPhotoIDTwo.setImageBitmap(bmp);


                            }
                        }
                    });
                //}
                //order++;
            }
            mRecyclerView.setAdapter(mAdapter);
        }
    });



 //Query to load String data into the card view/recycler view
    ParseQuery<ParseObject> query = ParseQuery.getQuery("events");
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {

            if (e == null) {

                for (int i = 0; i < objects.size(); i++) {
                    Information information = new Information();

                    information.mNewstTitle = objects.get(i).getString("name");
                    information.mNewsStory = objects.get(i).getString("shortinfo");
                    //information.partyCost = parseObject.getString("partyName");


                    String url=objects.get(i).getParseFile("image").getUrl();


                    //information.mEventsPhotoID = objects.getParseFile("partyFlyerImage");
                    //information.mEventsPhotoID = objects.get(i).getParseFile("image");




                    //information.mNewsPhotoIcon = R.drawable.newsitem));

                    //Initialize ImageView
                    ParseImageView imageViewPicasso = (ParseImageView)  findViewById(R.id.eventsPhotoID);

                    //Loading image from below url into imageView
                    Picasso.with(MainActivity.this)
                            .load(url)
                            .into(imageViewPicasso);



                    data.add(information);
                }
            } else {
                // something went wrong
            }
            //adapter.notifyItemRangeInserted(startPosition, imageUrls.length);
            mRecyclerView.setAdapter(mAdapter);
        }
    });


}//END onCreate



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is   present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            drawerLayout.openDrawer(GravityCompat.START);
            return true;
    }
    return super.onOptionsItemSelected(item);
 }

}//End Main Activity

我的适配器类:

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
//private List<String> imageUrls = new ArrayList<>();
List<Information> data = Collections.emptyList();
private LayoutInflater inflater;
private Context context;

/*public CustomAdapter (Context context,List<Information>data){
    this.context=context;
    inflater=LayoutInflater.from(context);
    this.data= data;
}*/

public CustomAdapter (Context context,List<Information>data){
    this.context=context;
    inflater=LayoutInflater.from(context);
    this.data= data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
    View view= inflater.inflate(R.layout.cardview_upcomingshows, parent, false);
    MyViewHolder holder = new MyViewHolder(view);


    return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position){
    Information current= data.get(position);
    //holder.mEventsPhotoID.setImageResource(current.mEventsPhotoID);
    holder.mNewstTitle.setText(current.mNewstTitle);
    holder.mNewsStory.setText(current.mNewsStory);
    holder.mEventsPhotoID.setParseFile(current.mEventsPhotoID);
    //holder.mEventsPhotoIDTwo.setParseFile(current.mEventsPhotoIDTwo);



}

@Override
public int getItemCount(){

    return data.size();
}


class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    //ImageView mEventsPhotoID;
    TextView mNewstTitle;
    TextView mNewsStory;
    ParseImageView mEventsPhotoID;
    //ParseImageView mEventsPhotoIDTwo;



    public MyViewHolder(View itemView) {
        super(itemView);



        //promoterImage = (ParseImageView) itemView.findViewById(R.id.promoterPicImage);
        mEventsPhotoID = (ParseImageView) itemView.findViewById(R.id.eventsPhotoID);
        //mEventsPhotoIDTwo = (ParseImageView) itemView.findViewById(R.id.eventsPhotoIDTwo);
        mNewstTitle = (TextView) itemView.findViewById(R.id.newsTitle);
        mNewsStory = (TextView) itemView.findViewById(R.id.newsStory);


        mNewstTitle.setOnClickListener(this);
        mNewsStory.setOnClickListener(this);
        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        Toast.makeText(context, "Recycle Click" + getLayoutPosition(), Toast.LENGTH_SHORT).show();

        if(getLayoutPosition()==0){
            Intent intentEventsWebView = new Intent(itemView.getContext(), EventsWebViewActivity.class);
            //intentIndependenceDay.putExtra("MyClass", myclass);
            intentEventsWebView.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            itemView.getContext().startActivity(intentEventsWebView);
        }
        if(getLayoutPosition()==1){
            Intent intentIndependenceDay = new Intent(itemView.getContext(), NextActivity.class);
            //intentIndependenceDay.putExtra("MyClass", myclass);
            intentIndependenceDay.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            itemView.getContext().startActivity(intentIndependenceDay);
        }
        if(getLayoutPosition()==2){
            Intent intentShelleyMaxwellDance = new Intent(itemView.getContext(), OtherActivity.class);
            //intentIndependenceDay.putExtra("MyClass", myclass);
            intentShelleyMaxwellDance.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            itemView.getContext().startActivity(intentShelleyMaxwellDance);
        }


    }
 }
}

我的数据模型类(包含回收器视图的数据):

公共类信息{

  String mNewstTitle;
  String mNewsStory;
  ParseFile mEventsPhotoID;
}

1 个答案:

答案 0 :(得分:0)

与其亲自阅读ParseFile,不如尝试使用此处提到的Url方法:

Displaying ParseFile Containing Images Using Their Urls In A RecyclerView