/*
|
* Copyright (c) 2020 WildFireChat. All rights reserved.
|
*/
|
|
package cn.wildfire.chat.kit.contact.pick;
|
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.TextView;
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.fragment.app.Fragment;
|
import androidx.lifecycle.ViewModelProviders;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
import butterknife.BindView;
|
import butterknife.ButterKnife;
|
import butterknife.OnClick;
|
import cn.wildfire.chat.kit.R;
|
import cn.wildfire.chat.kit.R2;
|
import cn.wildfire.chat.kit.contact.UserListAdapter;
|
import cn.wildfire.chat.kit.contact.model.UIUserInfo;
|
import cn.wildfire.chat.kit.widget.FlowTagLayout;
|
import cn.wildfire.chat.kit.widget.OnTagSelectListener;
|
import cn.wildfire.chat.kit.widget.TagAdapter;
|
import cn.wildfire.chat.kit.widget.TagItem;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class SearchAndPickUserFragment extends Fragment implements UserListAdapter.OnUserClickListener {
|
private CheckableUserListAdapter contactAdapter;
|
private PickUserViewModel pickUserViewModel;
|
private PickUser pickUser;
|
|
@BindView(R2.id.usersRecyclerView)
|
RecyclerView contactRecyclerView;
|
@BindView(R2.id.tipTextView)
|
TextView tipTextView;
|
@BindView(R2.id.tag_layout)
|
FlowTagLayout tagLayout;
|
|
private TagAdapter<String> tagAdapter;
|
|
@Nullable
|
@Override
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
View view = inflater.inflate(R.layout.contact_search_fragment, container, false);
|
ButterKnife.bind(this, view);
|
init();
|
initTagView();
|
return view;
|
}
|
|
public void setPickUser(PickUser pickUser) {
|
this.pickUser = pickUser;
|
}
|
private void initTagView() {
|
tagAdapter = new TagAdapter(getActivity());
|
tagLayout.setTagCheckedMode(FlowTagLayout.FLOW_TAG_CHECKED_MULTI);
|
tagLayout.setAdapter(tagAdapter);
|
tagLayout.setOnTagSelectListener(new OnTagSelectListener() {
|
@Override
|
public void onItemSelect(FlowTagLayout parent, List<Integer> selectedList) {
|
if (selectedList != null && selectedList.size() > 0) {
|
//科室筛选
|
}else{
|
//筛选
|
}
|
}
|
});
|
initTagData();
|
}
|
|
private void initTagData() {
|
List<TagItem> dataSource = new ArrayList<>();
|
dataSource.add(new TagItem("心血管外壳"));
|
dataSource.add(new TagItem("心血管内科"));
|
dataSource.add(new TagItem("心内科"));
|
tagAdapter.onlyAddAll(dataSource);
|
}
|
|
@OnClick(R2.id.tipTextView)
|
void onTipTextViewClick() {
|
pickUser.hideSearchContactFragment();
|
}
|
|
private void init() {
|
pickUserViewModel = ViewModelProviders.of(getActivity()).get(PickUserViewModel.class);
|
contactAdapter = new CheckableUserListAdapter(this);
|
contactAdapter.setOnUserClickListener(this);
|
contactRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
contactRecyclerView.setAdapter(contactAdapter);
|
}
|
|
public void search(String keyword) {
|
if (TextUtils.isEmpty(keyword)) {
|
return;
|
}
|
List<UIUserInfo> result = pickUserViewModel.searchUser(keyword);
|
if (result == null || result.isEmpty()) {
|
contactRecyclerView.setVisibility(View.GONE);
|
tipTextView.setVisibility(View.VISIBLE);
|
} else {
|
contactRecyclerView.setVisibility(View.VISIBLE);
|
tipTextView.setVisibility(View.GONE);
|
}
|
contactAdapter.setUsers(result);
|
contactAdapter.notifyDataSetChanged();
|
}
|
|
public void rest() {
|
tipTextView.setVisibility(View.VISIBLE);
|
contactRecyclerView.setVisibility(View.GONE);
|
contactAdapter.setUsers(null);
|
}
|
|
@Override
|
public void onUserClick(UIUserInfo userInfo) {
|
if (userInfo.isCheckable()) {
|
pickUserViewModel.checkUser(userInfo, !userInfo.isChecked());
|
// the checked status has already changed by checkContact method
|
contactAdapter.updateUserStatus(userInfo);
|
}
|
}
|
}
|