Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I order my Parse Server with Created Date, All texts and Contents Are Arriving Properly, But the Image is not in Proper Order. Please Help Me. #6570

Closed
balasubramanian1612s opened this issue Apr 6, 2020 · 4 comments

Comments

@balasubramanian1612s
Copy link

### SportsTab.java

package com.codersport.enjoyfreetime;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;

import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ListView;

import com.borjabravo.readmoretextview.ReadMoreTextView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.parse.FindCallback;
import com.parse.GetCallback;
import com.parse.GetDataCallback;
import com.parse.ParseException;
import com.parse.ParseFile;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import static androidx.constraintlayout.widget.Constraints.TAG;

public class sportsTab extends Fragment {
Context context1;

static ImageButton likeBtn;
static CustomListPosts adapter;

ArrayList<Bitmap> images;
ArrayList<String> des;
ArrayList<String> topic;
ArrayList<String> postId;
ArrayList<String> postLikes;

public sportsTab() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view= inflater.inflate(R.layout.fragment_sports_tab, container, false);
    topic=new ArrayList<>();
    des=new ArrayList<>();
    images=new ArrayList<>();
    postId=new ArrayList<>();
    postLikes=new ArrayList<>();
    likeBtn=(ImageButton)view.findViewById(R.id.likebtn);
    final ListView sportsList=view.findViewById(R.id.sportHobbyList);

    topic.clear();
    des.clear();
    images.clear();
    postId.clear();
    postLikes.clear();

    ParseQuery<ParseObject> allPosts=ParseQuery.getQuery("Posts");
    allPosts.orderByDescending("createdAt");

    allPosts.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if(e==null && objects!=null){

                for (final ParseObject object : objects){

                    topic.add((String) object.get("Topic"));
                    des.add((String) object.get("Description"));
                    postId.add(object.getObjectId());
                    postLikes.add((String) object.get("LikedBy"));

                    ParseFile imageFile = (ParseFile) object.get("Images");
                    imageFile.getDataInBackground(new GetDataCallback() {
                        @Override
                        public void done(byte[] data, ParseException e) {
                            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                            images.add(bitmap);
                            Log.i("Image", String.valueOf(bitmap));
                        }
                    });



                }


            }
            Bitmap arrayImage[] = new Bitmap[images.size()];
            for(int j =0;j<images.size();j++){
                arrayImage[j] = images.get(j);
                Log.i("ImageArray", String.valueOf(arrayImage[j]));
            }

            String arrayTopic[] = new String[topic.size()];
            for(int j =0;j<topic.size();j++){
                arrayTopic[j] = topic.get(j);
            }

            String arrayDes[] = new String[des.size()];
            for(int j =0;j<des.size();j++){
                arrayDes[j] = des.get(j);
            }

            String arrayPostId[] = new String[postId.size()];
            for(int j =0;j<postId.size();j++){
                arrayPostId[j] = postId.get(j);
            }

            String arrayPostLikes[] = new String[postLikes.size()];
            for(int j =0;j<postLikes.size();j++){
                arrayPostLikes[j] = postLikes.get(j);
            }


            adapter=new CustomListPosts(context1,arrayTopic,arrayDes,images,arrayPostId,arrayPostLikes);
            sportsList.setAdapter(adapter);



        }
    });




    return view;
}



@Override
public void onAttach(Context context) {
    super.onAttach(context);

    Fragment context3=sportsTab.this;
    Log.i("Fragmet", String.valueOf(context));
    context1=context3.getContext();
    Log.i("Context", String.valueOf(context1));
    context1 = context;
    Log.i("Outside", String.valueOf(context1));
}

}

### CustomListsPosts.java

package com.codersport.enjoyfreetime;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.borjabravo.readmoretextview.ReadMoreTextView;
import com.devs.readmoreoption.ReadMoreOption;
import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;
import com.parse.SaveCallback;
import com.skyhope.showmoretextview.ShowMoreTextView;

import java.util.ArrayList;

public class CustomListPosts extends ArrayAdapter {

private String[] topic;
private String[] des;
private String[] postId;
private String[] postLikes;
private ArrayList<Bitmap> image;
private Context context;
int Resources;

public CustomListPosts(@NonNull Context context, String[] topic, String[] des, ArrayList<Bitmap> image,String[] postId,String[] postLikes) {
    super(context, R.layout.post_item,topic);
    Log.i("I am here at ","customlistpos Maint");
    this.context=context;
    this.topic=topic;
    this.des=des;
    this.postLikes=postLikes;
    this.image=image;
    this.postId=postId;
    Resources=R.layout.post_item;


}


public int getCount() {
    return topic.length;
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View row=convertView;
    LayoutInflater layoutInflater=LayoutInflater.from(context);
    if(convertView==null)
        row = layoutInflater.inflate(Resources, parent, false);
    Log.i("here","found");
    TextView topicfinal=row.findViewById(R.id.parseposttopic);
    topicfinal.setText(topic[position]);


    ImageView finalImage=row.findViewById(R.id.postImage);
    try {
        if(image.get(position)!=null){
            Bitmap bmp=image.get(position);
            finalImage.setImageBitmap(bmp);}
    }catch (Exception e){
        e.printStackTrace();

    }



    TextView postDes=row.findViewById(R.id.parsepostdes);


    // OR using options to customize

    ReadMoreOption readMoreOption = new ReadMoreOption.Builder(context)
            .textLength(3, ReadMoreOption.TYPE_LINE) // OR
            //.textLength(300, ReadMoreOption.TYPE_CHARACTER)
            .moreLabel("MORE")
            .lessLabel("LESS")
            .moreLabelColor(Color.RED)
            .lessLabelColor(Color.BLUE)
            .labelUnderLine(true)
            .build();

    readMoreOption.addReadMoreTo(postDes, des[position]);
    final ImageView button=row.findViewById(R.id.likebtn);



    /*final ParseQuery<ParseObject> query1=new ParseQuery("Posts");
    try {
        ParseObject object=query1.get(postId[position]);
        String s=(String) object.get("LikedBy");
        if(s!=null){
            Log.i("Users found",s);
            if(s.contains(ParseUser.getCurrentUser().getUsername())){

                Log.i("Users found",s);

            }}


    } catch (ParseException e) {
        e.printStackTrace();
    }*/

    if(postLikes[position]!=null){

        if (postLikes[position].contains(ParseUser.getCurrentUser().getUsername())){

            button.setImageResource(R.drawable.likeon);

        }
        else {

            button.setImageResource(R.drawable.likeoff);
        }

    }


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            final ParseQuery<ParseObject> query=new ParseQuery("Posts");
            query.getInBackground(postId[position], new GetCallback<ParseObject>() {
                @Override
                public void done(ParseObject object, ParseException e) {
                    if(e==null && object!=null && !postLikes[position].contains(ParseUser.getCurrentUser().getUsername())){

                        Log.i("Liked By :",ParseUser.getCurrentUser().getUsername());

                        String likescound=(String) object.get("LikedBy");
                        likescound=likescound+", "+ParseUser.getCurrentUser().getUsername();

                        object.put("LikedBy",likescound);
                        object.saveInBackground();

                    }
                }
            });

            button.setImageResource(R.drawable.likeon);}
    });


    Log.i("I am here at ","customlistpost");
    return  row;
}

}

@davimacedo
Copy link
Member

Can you please fill out the issue template? Thanks.

@balasubramanian1612s
Copy link
Author

<ImageView
    android:layout_marginTop="20dp"
    android:id="@+id/postImage"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:scaleType="centerInside"
    app:srcCompat="@drawable/instagramlogo" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/postImage"
    android:id="@+id/parseposttopic"
    android:textSize="30dp"
    android:text="Title:"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="18dp"
    android:text="Description:"
    android:layout_below="@+id/parseposttopic"
    android:id="@+id/parsepostdes"/>

<ImageButton
    android:id="@+id/likebtn"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_below="@id/parsepostdes"
    android:background="#F9F9F9"
    android:scaleType="centerCrop"
    android:src="@drawable/likeoff"
    android:text="LIKE"
    android:visibility="visible"
    tools:src="@drawable/likeoff" />

<ImageButton
    android:id="@+id/commentbtn"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_below="@id/parsepostdes"
    android:layout_toRightOf="@id/likebtn"
    android:layout_marginLeft="15dp"
    android:text="COMMENT"
    android:visibility="visible" />

<ImageButton
    android:id="@+id/downloadbtn"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_below="@id/parsepostdes"
    android:layout_alignParentEnd="true"
    android:text="DOWNLOAD"
    android:visibility="visible" />

@balasubramanian1612s
Copy link
Author

Please Check This! the whole thing is Covered under RelativeLayout.

this is ### row_item.xml

@balasubramanian1612s
Copy link
Author

Can you please fill out the issue template? Thanks.

Please tell me what to do??

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants