Description
### 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;
}
}