Fixed NPE on list of shares in SearchShareesFragment; and some clean-up

This commit is contained in:
David A. Velasco 2015-10-28 16:18:20 +01:00
parent f91241566a
commit d4df65d7c7
3 changed files with 31 additions and 24 deletions

View file

@ -147,9 +147,9 @@ public class ShareActivity extends FileActivity
}
@Override
public void showSearchUsersAndGroups(ArrayList<OCShare> shares) {
public void showSearchUsersAndGroups() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
mSearchFragment = SearchShareesFragment.newInstance(getFile(), getAccount(), shares);
mSearchFragment = SearchShareesFragment.newInstance(getFile(), getAccount());
ft.hide(mShareFileFragment);
ft.add(R.id.share_fragment_container, mSearchFragment, TAG_SEARCH_FRAGMENT);
ft.addToBackStack(TAG_SEARCH_FRAGMENT);

View file

@ -60,11 +60,11 @@ public class SearchShareesFragment extends Fragment implements ShareUserListAdap
// the fragment initialization parameters
private static final String ARG_FILE = "FILE";
private static final String ARG_ACCOUNT = "ACCOUNT";
private static final String ARG_SHARES = "SHARES";
// Parameters
private OCFile mFile;
private Account mAccount;
private ArrayList<OCShare> mShares;
private ShareUserListAdapter mUserGroupsAdapter = null;
@ -73,18 +73,15 @@ public class SearchShareesFragment extends Fragment implements ShareUserListAdap
/**
* Public factory method to create new SearchShareesFragment instances.
*
* @param fileToShare An {@link OCFile} to show in the fragment
* @param fileToShare An {@link OCFile} to be shared
* @param account An ownCloud account
* @param
* @return A new instance of fragment SearchShareesFragment.
*/
// TODO: Rename and change types and number of parameters
public static SearchShareesFragment newInstance(OCFile fileToShare, Account account, ArrayList<OCShare> shares) {
public static SearchShareesFragment newInstance(OCFile fileToShare, Account account) {
SearchShareesFragment fragment = new SearchShareesFragment();
Bundle args = new Bundle();
args.putParcelable(ARG_FILE, fileToShare);
args.putParcelable(ARG_ACCOUNT, account);
args.putParcelableArrayList(ARG_SHARES, shares);
fragment.setArguments(args);
return fragment;
}
@ -99,7 +96,6 @@ public class SearchShareesFragment extends Fragment implements ShareUserListAdap
if (getArguments() != null) {
mFile = getArguments().getParcelable(ARG_FILE);
mAccount = getArguments().getParcelable(ARG_ACCOUNT);
mShares = getArguments().getParcelableArrayList(ARG_SHARES);
}
}
@ -134,18 +130,19 @@ public class SearchShareesFragment extends Fragment implements ShareUserListAdap
}
});
// Show data: Fill in list of users and groups
ListView usersList = (ListView) view.findViewById(R.id.searchUsersListView);
mUserGroupsAdapter = new ShareUserListAdapter(getActivity().getApplicationContext(),
R.layout.share_user_item, mShares, this);
if (mShares.size() > 0) {
usersList.setVisibility(View.VISIBLE);
usersList.setAdapter(mUserGroupsAdapter);
}
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Load data into the list
refreshUsersOrGroupsListFromDB();
}
/**
* Get users and groups fromn the DB to fill in the "share with" list
*/

View file

@ -2,6 +2,7 @@
* ownCloud Android client application
*
* @author masensio
* @author David A. Velasco
* Copyright (C) 2015 ownCloud Inc.
*
* This program is free software: you can redistribute it and/or modify
@ -142,7 +143,7 @@ public class ShareFileFragment extends Fragment
boolean shareWithUsersEnable = AccountUtils.hasSearchUsersSupport(mAccount);
if (shareWithUsersEnable) {
// Show Search Fragment
mListener.showSearchUsersAndGroups(mShares);
mListener.showSearchUsersAndGroups();
} else {
String message = getString(R.string.share_sharee_unavailable);
Toast.makeText(getActivity(), message, Toast.LENGTH_LONG).show();
@ -157,9 +158,14 @@ public class ShareFileFragment extends Fragment
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Load data to the list (start process with an Async Task)
// Load data into the list
refreshUsersOrGroupsListFromDB();
// Request for a refresh of the data through the server (starts an Async Task)
if (mListener != null) {
mListener.refreshUsersOrGroupsListFromServer();
}
}
@Override
public void onAttach(Activity activity) {
@ -192,8 +198,12 @@ public class ShareFileFragment extends Fragment
private void updateListOfUserGroups() {
// Update list of users/groups
mUserGroupsAdapter = new ShareUserListAdapter(getActivity().getApplicationContext(),
R.layout.share_user_item, mShares, this);
mUserGroupsAdapter = new ShareUserListAdapter(
getActivity(),
R.layout.share_user_item,
mShares,
this
);
// Show data
TextView noShares = (TextView) getView().findViewById(R.id.shareNoUsers);
@ -229,7 +239,7 @@ public class ShareFileFragment extends Fragment
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnShareFragmentInteractionListener {
void showSearchUsersAndGroups(ArrayList<OCShare> shares);
void showSearchUsersAndGroups();
void refreshUsersOrGroupsListFromServer();
void unshareWith(OCShare share);
}