Created PostsListFragment.

This commit is contained in:
Pierre 2018-03-19 19:18:51 +01:00
parent 066805df27
commit 06f5b7962b
5 changed files with 159 additions and 31 deletions

View File

@ -189,6 +189,11 @@ public class FriendsListFragment extends Fragment
@Override @Override
protected void onPostExecute(ArrayList<FriendUser> friendUsers) { protected void onPostExecute(ArrayList<FriendUser> friendUsers) {
//Check the activity still exists
if(getActivity() == null)
return;
apply_friends_list(friendUsers); apply_friends_list(friendUsers);
} }
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

View File

@ -0,0 +1,100 @@
package org.communiquons.android.comunic.client.ui.fragments;
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.ArrayMap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import org.communiquons.android.comunic.client.R;
import org.communiquons.android.comunic.client.data.UsersInfo.UserInfo;
import org.communiquons.android.comunic.client.data.posts.PostsList;
import org.communiquons.android.comunic.client.ui.adapters.PostsAdapter;
/**
* Posts list fragment
*
* Note : this fragment IS NOT MADE to be used in standalone mode !!!
*
* @author Pierre HUBERT
* Created by pierre on 3/18/18.
*/
public class PostsListFragment extends Fragment {
/**
* The list of posts
*/
PostsList mPostsList;
/**
* Informations about the related users
*/
ArrayMap<Integer, UserInfo> mUsersInfo;
/**
* Post adapter
*/
PostsAdapter mPostsAdapter;
/**
* The list of posts
*/
ListView mListView;
/**
* Set the list of posts of the fragment
*
* @param list The list of post
*/
public void setPostsList(PostsList list) {
this.mPostsList = list;
}
/**
* Set the list of users informations
*
* @param list The list
*/
public void setUsersInfos(ArrayMap<Integer, UserInfo> list){
this.mUsersInfo = list;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_postslist, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//Get the list view
mListView = view.findViewById(R.id.posts_list);
//Show the posts
show();
}
public void show(){
//Check if the list of posts is not null
if(mPostsList == null && mUsersInfo == null)
return;
//Create posts adapter (if required)
if(mPostsAdapter == null) {
mPostsAdapter = new PostsAdapter(getActivity(), mPostsList, mUsersInfo);
//Connect the adapter to the view
mListView.setAdapter(mPostsAdapter);
}
//Notify dataset update
mPostsAdapter.notifyDataSetChanged();
}
}

View File

@ -2,22 +2,19 @@ package org.communiquons.android.comunic.client.ui.fragments;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Fragment; import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.communiquons.android.comunic.client.ui.activities.MainActivity;
import org.communiquons.android.comunic.client.R; import org.communiquons.android.comunic.client.R;
import org.communiquons.android.comunic.client.data.Account.AccountUtils;
import org.communiquons.android.comunic.client.data.DatabaseHelper; import org.communiquons.android.comunic.client.data.DatabaseHelper;
import org.communiquons.android.comunic.client.data.ImageLoad.ImageLoadManager; import org.communiquons.android.comunic.client.data.ImageLoad.ImageLoadManager;
import org.communiquons.android.comunic.client.data.UsersInfo.AdvancedUserInfo; import org.communiquons.android.comunic.client.data.UsersInfo.AdvancedUserInfo;
@ -26,7 +23,7 @@ import org.communiquons.android.comunic.client.data.UsersInfo.UserInfo;
import org.communiquons.android.comunic.client.data.posts.PostsHelper; import org.communiquons.android.comunic.client.data.posts.PostsHelper;
import org.communiquons.android.comunic.client.data.posts.PostsList; import org.communiquons.android.comunic.client.data.posts.PostsList;
import org.communiquons.android.comunic.client.data.utils.UiUtils; import org.communiquons.android.comunic.client.data.utils.UiUtils;
import org.communiquons.android.comunic.client.ui.adapters.PostsAdapter; import org.communiquons.android.comunic.client.ui.activities.MainActivity;
/** /**
* User page fragment * User page fragment
@ -62,12 +59,12 @@ public class UserPageFragment extends Fragment {
/** /**
* User posts * User posts
*/ */
private PostsList postsList; private PostsList mPostsList;
/** /**
* User informations * User informations
*/ */
private ArrayMap<Integer, UserInfo> usersInfos; private ArrayMap<Integer, UserInfo> mUsersInfo;
/** /**
* Get user helper * Get user helper
@ -77,7 +74,7 @@ public class UserPageFragment extends Fragment {
/** /**
* Posts helper * Posts helper
*/ */
private PostsHelper postsHelper; private PostsHelper mPostsHelper;
/** /**
* Loading alert dialog * Loading alert dialog
@ -95,14 +92,10 @@ public class UserPageFragment extends Fragment {
private ImageView user_image; private ImageView user_image;
/** /**
* Posts list view * Posts list fragment
*/ */
private ListView postsListView; private PostsListFragment mPostsListFragment;
/**
* Posts adapter
*/
private PostsAdapter postsAdapter;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
@ -118,7 +111,7 @@ public class UserPageFragment extends Fragment {
getUsersHelper = new GetUsersHelper(getActivity(), dbHelper); getUsersHelper = new GetUsersHelper(getActivity(), dbHelper);
//Create posts helper instance //Create posts helper instance
postsHelper = new PostsHelper(getActivity()); mPostsHelper = new PostsHelper(getActivity());
} }
@Nullable @Nullable
@ -134,22 +127,19 @@ public class UserPageFragment extends Fragment {
//Get the user views //Get the user views
user_image = view.findViewById(R.id.user_account_image); user_image = view.findViewById(R.id.user_account_image);
user_name = view.findViewById(R.id.user_account_name); user_name = view.findViewById(R.id.user_account_name);
//Get the posts view
postsListView = view.findViewById(R.id.user_posts);
} }
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
//Check if we got informations about the user //Check if we got information about the user
if(userInfo == null){ if(userInfo == null){
//Show loading alert dialog //Show loading alert dialog
loadingDialog = UiUtils.create_loading_dialog(getActivity()); loadingDialog = UiUtils.create_loading_dialog(getActivity());
//Fetch user informations //Fetch user information
new AsyncTask<Integer, Void, AdvancedUserInfo>(){ new AsyncTask<Integer, Void, AdvancedUserInfo>(){
@Override @Override
protected AdvancedUserInfo doInBackground(Integer... params) { protected AdvancedUserInfo doInBackground(Integer... params) {
@ -166,6 +156,9 @@ public class UserPageFragment extends Fragment {
} }
else else
onGotUserInfo(userInfo); onGotUserInfo(userInfo);
//Render the list of post (if available)
render_list_posts();
} }
@Override @Override
@ -226,11 +219,11 @@ public class UserPageFragment extends Fragment {
@Override @Override
protected PostsList doInBackground(Void... params) { protected PostsList doInBackground(Void... params) {
PostsList list = postsHelper.get_user(userID); PostsList list = mPostsHelper.get_user(userID);
//Get the information about the users who created the posts //Get the information about the users who created the posts
if(list != null) if(list != null)
usersInfos = getUsersHelper.getMultiple(list.getUsersId()); mUsersInfo = getUsersHelper.getMultiple(list.getUsersId());
return list; return list;
} }
@ -256,18 +249,40 @@ public class UserPageFragment extends Fragment {
return; return;
} }
//Check we didn't get user informations //Check we didn't get user information
if(usersInfos == null){ if(mUsersInfo == null){
Toast.makeText(getActivity(), R.string.err_get_users_info, Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), R.string.err_get_users_info, Toast.LENGTH_SHORT).show();
return; return;
} }
//Save posts posts //Save the list of posts
postsList = list; mPostsList = list;
//Create post adatper //Render the list of posts
postsAdapter = new PostsAdapter(getActivity(), list, usersInfos); render_list_posts();
postsListView.setAdapter(postsAdapter); }
/**
* Render the list of posts
*/
private void render_list_posts(){
//Check we have got required information
if(mPostsList == null || mUsersInfo == null)
return;
if(mPostsListFragment == null) {
//Create post fragment if requiredand display it
mPostsListFragment = new PostsListFragment();
mPostsListFragment.setPostsList(mPostsList);
mPostsListFragment.setUsersInfos(mUsersInfo);
} }
//Set the fragment
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_user_page, mPostsListFragment);
transaction.commit();
}
} }

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ListView android:id="@+id/posts_list"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/post_item"
xmlns:tools="http://schemas.android.com/tools" />

View File

@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:orientation="vertical"
android:id="@+id/fragment_user_page"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -34,7 +35,7 @@
</FrameLayout> </FrameLayout>
<!-- User posts --> <!-- User posts -->
<ListView <FrameLayout
android:id="@+id/user_posts" android:id="@+id/user_posts"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"