Cześć, chciałbym pobrać listę rekordów po wpisaniu 3 znaków przy mniejszej ilości wyświetla mi się pełna lista.
<local:CustomSearch Text="{Binding SearchPhrase}" Grid.Row="1" Placeholder="Szukaj osób" Margin="16,0,16,0" />
<ScrollView Grid.Row="2">
<flv:FlowListView SeparatorVisibility="None" HasUnevenRows="true" FlowItemTappedCommand="{Binding FollowerItemCommand}" FlowColumnMinWidth="100" FlowItemsSource="{Binding FollowerItems}">
<flv:FlowListView.FlowColumnTemplate>
<DataTemplate>
<Grid Padding="5">
<Grid.RowDefinitions>
<RowDefinition Height="98" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="98" />
</Grid.ColumnDefinitions>
<Image>
<Image.Source>
<UriImageSource Uri="{Binding EmailHash}"/>
</Image.Source>
</Image>
</Grid>
</DataTemplate>
</flv:FlowListView.FlowColumnTemplate>
</flv:FlowListView>
ViewModel
private ObservableCollection<FollowersResponseModel> _followersList = null;
public ObservableCollection<FollowersResponseModel> FollowersList
{
get => _followersList;
set
{
_followersList = value;
OnPropertyChanged();
}
}
private SearchModel _searchItem = null;
public SearchModel SearchItem
{
get => _searchItem;
set
{
_searchItem = value;
OnPropertyChanged();
OnMyCarItemSelected();
}
}
private string _searchPhrase = null;
public string SearchPhrase
{
get => _searchPhrase;
set
{
_searchPhrase = value;
OnPropertyChanged();
OnSearchPhrase();
}
......
private async void InitializeFollowersList()
{
UserDialogsExtension.Instance.ShowLoading(AppResource.PleaseWait, Acr.UserDialogs.MaskType.Black);
var model = await ProfileManagerInstance.GetFollowersBlockedList();
UserDialogsExtension.Instance.HideLoading();
if (model == null) return;
if (FollowerItems == null)
{
FollowerItems = new ObservableCollection<FollowerModel>();
}
else
{
FollowerItems.Clear();
}
FollowerItems.AddRange(model.Users);
}
private async void OnFollowerItemChanged()
{
if (_followerItem == null) return;
await NavigateToPage(new UserProfilePage(_followerItem.Uin, _followerItem.Login));
}
private void OnSearchPhrase()
{
FollowerItems.Select(i => i.Login.Contains(SearchPhrase));
}
....
Api
public async Task<FollowersModel> GetFollowersBlockedList()
{
var version = await FileManagerInstance.ReadFile(FileManager.FileType.FollowersVersion);
if (string.IsNullOrEmpty(version)) version = DEFAULT_VERSION;
var response = await BasicRequestAsync(string.Format(FOLLOWERS_BLOCKED_URL, version), HttpMethod.Get, true);
if (response == null || !response.IsSuccessStatusCode)
{
var followerModel = await LoadFollowersListFromStorage();
return followerModel;
}
var stream = await response.Content.ReadAsStreamAsync();
var content = Tools.ConvertStreamToString(stream);
if (string.IsNullOrEmpty(content))
{
var followerModel = await LoadFollowersListFromStorage();
return followerModel;
}
var responseModel = JsonConvert.DeserializeObject<ResponseModel>(content);
var data = responseModel.Result.Response.Data;
if (data == null)
{
_log.MessageInDebug("Response code status : " + responseModel.Result.Response.Message);
var followerModel = await LoadFollowersListFromStorage();
return followerModel;
}
else
{
var model = JsonConvert.DeserializeObject<FollowersResponseModel>(data.ToString());
FileManagerInstance.WriteTextToFile(FileManager.FileType.FollowersList, data.ToString());
var followerModel = new FollowersModel()
{
Users = model.Users.Select(u => new FollowerModel
{
Uin = u.Uin,
Login = u.Login,
EmailHash = u.EmailHash,
UinFollows = u.UinFollows,
FollowOfUin = u.FollowOfUin,
Blocked = u.Blocked
}).ToList(),
Version = model.Version
};
return followerModel;
}
}