में दिखाई दे रहा है मेरे पास Activity
में है जहां उपयोगकर्ता चीजों को टाइप और खोज सकते हैं। खोज बार के नीचे, मेरे पास ViewPager
से जुड़ा 2 tabs
है। मैंने EditText
के लिए Fragments
में एक RxJava ईवेंट चेंज श्रोता जोड़ा है जो मेरे पास टैब के लिए है। यहाँ प्रासंगिक कोड है:फायर आरएक्सजेवा घटना केवल तभी बदलती है जब Fragment ViewPager
private Subscription subscription;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_people_search, container, false);
ButterKnife.bind(this, view);
LogUtil.i(TAG, "onCreateView called");
if (getActivity() != null) {
inputSearch = (EditText) getActivity().findViewById(R.id.editText11);
}
return view;
}
@Override
public void onResumeFragment() {
LogUtil.i(TAG, "onResumeFragment called");
if (subscription == null) {
doSearch();
}
}
private void doSearch() {
LogUtil.i(TAG, "doSearch called");
subscription = RxTextView.textChangeEvents(inputSearch)
.debounce(400, TimeUnit.MILLISECONDS)
.map(new Func1<TextViewTextChangeEvent, String>() {
@Override
public String call(TextViewTextChangeEvent textViewTextChangeEvent) {
return textViewTextChangeEvent.text().toString().trim();
}
})
.switchMap(new Func1<String, Observable<SearchUserData>>() {
@Override
public Observable<SearchUserData> call(String s) {
term = s;
if (previousTerm.equalsIgnoreCase(term) && TextUtils.isEmpty(term)) {
//do not reset pagination variables
} else if (!previousTerm.equalsIgnoreCase(term) && TextUtils.isEmpty(term)) {
min = 0;
max = 14;
} else if (previousTerm.equalsIgnoreCase(term) && !TextUtils.isEmpty(term)) {
//do not reset pagination variables
} else {
min = 0;
max = 14;
}
loadMoreOrNot = true;
previousTerm = term;
DiscoverAPI discoverAPI = restAdapter.create(DiscoverAPI.class);
return discoverAPI.getRxPeopleSearchResult(min, max, s, "user");
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getRxSearchObserver());
}
क्या मैं चाहता हूँ, जब मैं कुछ और खोज क्वेरी बैकएंड के लिए एक ही टैब जो अभी दोनों टैब के लिए चुना जाता है, नहीं करने के लिए जाना चाहिए। मैं यह कैसे कर सकता हूँ?
मुझे समझ नहीं आता कि वास्तव में आप क्या करना लेकिन करना चाहते हैं क्या ** setUserVisibleHint ** को तब कॉल किया जाता है जब ViewPager उपयोगकर्ता के लिए दृश्यमान होता है। – Amir
मैंने टूलबार में एक खोज बार डाला है, जब आप कुछ टाइप करते हैं, तो आप वर्तमान में कौन से टैब को चुनते हैं, इस पर निर्भर करते हुए आप 2 श्रेणियों, लोगों और दीर्घाओं में परिणाम देखते हैं। मुद्दा अभी है, जब भी मैं कुछ टाइप करता हूं, दोनों प्रकार के लिए खोज अनुरोध निकाल दिए जाते हैं। मैं केवल चयनित टैब के लिए खोज क्वेरी चाहता हूं। –
ऑनस्टॉप में सदस्यता से सदस्यता रद्द करने का प्रयास करें। – drivfe