使EditText视图(zipcode)自动加载

时间:2013-03-15 09:27:16

标签: android android-widget

我正在开发一个应用程序,当用户点击按钮然后新的活动布局时 将被打开。这个新的布局包含各种视图。

其中一个是邮政编码EditText。我希望此邮政编码EditText自动通过GPS获取用户的邮政编码并填写。为此我想要像这样工作:

  1. 用户点击按钮。
  2. 加载新布局。
  3. 所有视图都会完美加载,并且在邮政编码EditText前面会显示一个加载按钮 并通过GPS自动显示。
  4. 我如何处理第三点,即显示加载,直到用户邮政编码未被提取为止。

1 个答案:

答案 0 :(得分:0)

以下面的代码片段为例。你必须填补一些空白。

这是我在我的某个应用ProgressBar中展示Activities的方法。它有一个ListView,您必须用自己的内容替换它。

    <LinearLayout
        android:id="@+id/linlaHeaderProgress"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="horizontal"
        android:visibility="gone" >

        <ProgressBar
            android:id="@+id/pbHeaderProgress"
            style="@style/Spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="2dp" >
        </ProgressBar>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="left|center"
            android:padding="2dp"
            android:text="Loading...."
            android:textSize="20sp" >
        </TextView>
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#000000"
        android:dividerHeight="0dp"
        android:fadingEdge="none"
        android:persistentDrawingCache="scrolling"
        android:scrollbars="none" >
    </ListView>

现在,在您将此布局映射到Activity的Java代码中,转换LinearLayout linlaHeaderProgress。请注意,在XML本身中,android:visibility="gone"属性设置为"gone"

如果您使用AsyncTask获取邮政编码,那么当流程在doInBackground()中发生时,请通过切换ProgressBarlinlaHeaderProgress的可见性来显示onPreExecute()像这样:

@Override
protected void onPreExecute() {

    // SHOW THE PROGRESS BAR (SPINNER) WHILE FETCHING POST DETAILS
    linlaHeaderProgress.setVisibility(View.VISIBLE);
}

onPostExecute()中,再次切换可见性如下:

@Override
protected void onPostExecute(Void result) {

    // HIDE THE PROGRESS BAR (SPINNER) AFTER FETCHING THE POST DETAILS
    linlaHeaderProgress.setVisibility(View.GONE);
}

如果您没有使用AsyncTask,而是在Method中进行处理,请在方法的开头使用:linlaHeaderProgress.setVisibility(View.VISIBLE);.一旦在EditText中显示了邮政编码,就在方法结束时使用它:linlaHeaderProgress.setVisibility(View.GONE);

我全局声明LinearLayout linlaHeaderProgress,以便我可以在需要的地方重复使用它。如果这有帮助,或者如果您对我有任何其他问题,请告诉我。