Webサービスからデータをロードする際に、AutoCompleteTextViewにローディングインジケータを表示したいと考えています。オートコンプリートの右側に表示することをお勧めします(進行制御のようなf.iアニメーション - 回転ホイール)。どのようにこれを行うことができますか?AutoCompleteTextViewにローディングインジケータを追加する方法
6
A
答えて
5
ウェブサービスからデータをロードしている間に、ローディングインジケータをAutoCompleteTextViewに表示したいとします。
ウィジェットの右側に不確定な表情でProgressBar
を入れて、このようなAutoCompleTextView
クラス拡張:setLoadingIndicator()
方法でProgressBar
への参照を渡す
public class AutoCompleteLoadding extends AutoCompleteTextView {
private ProgressBar mLoadingIndicator;
public void setLoadingIndicator(ProgressBar view) {
mLoadingIndicator = view;
}
@Override
protected void performFiltering(CharSequence text, int keyCode) {
// the AutoCompleteTextview is about to start the filtering so show
// the ProgressPager
mLoadingIndicator.setVisibility(View.VISIBLE);
super.performFiltering(text, keyCode);
}
@Override
public void onFilterComplete(int count) {
// the AutoCompleteTextView has done its job and it's about to show
// the drop down so close/hide the ProgreeBar
mLoadingIndicator.setVisibility(View.INVISIBLE);
super.onFilterComplete(count);
}
}
を。これは、あなたがアダプタ()のアダプタ/アダプタのフィルタでWebサービス要求を行っていることを前提としています。
1
スピナーではなくプログレスバーを使用します。グラフィカルビューを使用して、AutoCompleteTextViewフィールド上に配置し、そのIDを設定します。私はprogressLoadingに鉱山を設定しました。
<ProgressBar
android:id="@+id/progressLoading"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/autoCompleteTextViewId"
android:layout_alignTop="@+id/autoCompleteTextViewId"
android:paddingTop="14dip"
android:paddingRight="10dip" />
は、その後、あなたの活動/フラグメント:
final ProgressBar barProgress = (ProgressBar) findViewById(R.id.progressLoading);
originProgress.setVisibility(View.GONE);
私たちが最初に隠しに設定し、自動的に表示されます。その後、AutoCompleteTextViewのaddTextChangedListenerのVISIBLEに設定します。その後、そのタスクが完了するたびに、それを非表示に戻します。
0
AutoCompleteView以内にプログレスバーを追加するには、簡単に次の操作を行うことができます。
まずそのようなカスタムオートコンプリートクラスを作成します。あなたのXMLに
これを追加、その後public class AutoCompleteWithLoading extends AutoCompleteTextView{
private ProgressBar mLoadingIndicator;
public AutoCompleteWithLoading(Context context) {
super(context);
}
public AutoCompleteWithLoading(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AutoCompleteWithLoading(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public AutoCompleteWithLoading(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@TargetApi(Build.VERSION_CODES.N)
public AutoCompleteWithLoading(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, Resources.Theme popupTheme) {
super(context, attrs, defStyleAttr, defStyleRes, popupTheme);
}
public void setLoadingIndicator(ProgressBar progressBar) {
mLoadingIndicator = progressBar;
}
public void dispayIndicator(){
if(mLoadingIndicator != null){
mLoadingIndicator.setVisibility(View.VISIBLE);
}
this.setText("");
}
public void removeIndicator(){
if(mLoadingIndicator != null){
mLoadingIndicator.setVisibility(View.GONE);
}
}
}
<thriviastudios.com.views.view.AutoCompleteWithLoading
android:padding="10dp"
android:layout_margin="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/NotPresentationText"
android:id="@+id/activity_activities_search_city_text_view"
android:popupBackground="@color/app_bg"
android:layout_centerInParent="true"
android:background="@color/app_bg_darker"
android:singleLine="true"
android:hint="City"
android:imeOptions="actionDone"
android:textColorHint="@color/white"
/>
<ProgressBar
android:id="@+id/loading_indicator"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:layout_marginRight="20dp"
android:visibility="gone"/>
</FrameLayout>
注:カスタムオートコンプリートクラスのフルパスを使用してください。
次に、アクティビティまたはフラグメントで、インジケータとオートコンプリートの参照を取得します。私はこれが誰かの役に立てば幸い
city.dispayIndicator();
と
city.removeIndicator();
:そうのようにオートコンプリートにプログレスバーを取り付けます
city.setLoadingIndicator(indicator);
などのように必要なときには、さらにインジケータを表示したり、削除することができます。
関連する問題
- 1. AutoCompleteTextViewの右側のローディングインジケータ
- 2. すべてのRelay.jsネットワークリクエストにローディングインジケータを追加する方法
- 3. iOSのCollectionViewのフッターにローディングインジケータを追加する方法
- 4. autocompletetextviewにリスナーを追加する方法、アンドロイド?
- 5. アンドロイドのAutocompleteTextViewの中に水平スクロールバーを追加するには?
- 6. AutoCompleteTextViewにテキストを設定する方法
- 7. AutocompleteTextviewアダプタに2つの値を追加する
- 8. 最近追加された場所をAutocompleteTextViewに表示する
- 9. autocompletetextviewのurlに後置を追加します
- 10. EditTextにアイテムを追加するクロスボタンを追加する方法
- 11. Xamarinフォーム - ネイティブバインド可能なビューとしてAndroid AutoCompleteTextViewを追加
- 12. Twilio接続オブジェクトに追加情報を追加する方法
- 13. jqgridのアクションボタンの前に追加ボタンを追加する方法
- 14. Nutch:ElasticSearchに追加フィールドを追加する方法は?
- 15. カスタムモジュールの[カートに追加]を追加する方法
- 16. ココアタッチスタティックライブラリに追加を追加する方法
- 17. ブートストラップ日時ピッカーに「追加」ボタンを追加する方法
- 18. xmlにコメントを追加して追加する方法
- 19. firebase.auth()に追加情報を追加する方法
- 20. Jenkins - 追加フォルダをサブフォルダに追加する方法。画像
- 21. emberモデルに追加情報を追加する方法
- 22. リソースコントローラーに追加のルートを追加する正しい方法
- 23. ストリームオペレータにインデントを追加する方法
- 24. ライブラリパスをコンパイラに追加する方法
- 25. アプリにタイマーを追加する方法!
- 26. カスタムアイテムをナビゲーションバーに追加する方法
- 27. ウィジェットにアクティビティを追加する方法
- 28. NSMutableArrayにキーを追加する方法
- 29. DetailDisclosureButtonにラベルテキストを追加する方法
- 30. generictogetherをDjangoに追加する方法