Кодирую правильный путь. Android наСоздание и инициализация - PullRequest
1 голос
/ 14 марта 2012

Я занимаюсь разработкой приложения, которое занимается получением данных JSON с сервера, анализирующим его, и настройкой адаптеров для просмотра данных в виде списка.Что я действительно хочу, так это узнать, правильно ли я начинаю занятие.У меня есть некоторый повторяющийся код в настройке адаптеров для разных счетчиков, а также в настройке их слушателей onClick.Как бы я пошел о консолидации этого кода, чтобы он не оказался в большом беспорядке.Я обнаружил, что мне трудно продолжать кодировать мои другие действия, потому что я сталкиваюсь с такими проблемами.Спасибо за любую помощь.

package com.bde.dgcr;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.*;

public class CourseSearch extends Activity {

private String citySearch;
private String stateSearch;
private String countrySearch;
private String mode;

public void onCreate(Bundle savedInstanceState) {
    // call Activity onCreate method to take care of all initial setup before we do
    // any other customizing of the method
    super.onCreate(savedInstanceState);
    //setting the current view to the mail xml file.
    setContentView(R.layout.main);
    // here we are creating new spinners and connecting their adapters to them. This needs to be
    // made into its own function. Any code that you are repeating should be made into its own function.
    Spinner countriesSpinner = (Spinner) findViewById(R.id.country);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.countries_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    countriesSpinner.setAdapter(adapter);
    countriesSpinner.setOnItemSelectedListener(new onCountrySelectedListener());
    //state spinner
    Spinner stateSpinner = (Spinner) findViewById(R.id.state);
    ArrayAdapter<CharSequence> state_adapter = ArrayAdapter.createFromResource(
            this, R.array.states_array, android.R.layout.simple_spinner_item);
    state_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    stateSpinner.setAdapter(state_adapter);
    stateSpinner.setOnItemSelectedListener(new onStateSelectedListener());
}


public void searchByLoc(View search) {
    final EditText cityField = (EditText) findViewById(R.id.cityName);
    citySearch = cityField.getText().toString();

    if (citySearch != null)
        setMode("findloc");
    Intent grabberintent = new Intent(CourseSearch.this, JsonGrabber.class);
    grabberintent.putExtra("city", citySearch);
    grabberintent.putExtra("state", stateSearch);
    grabberintent.putExtra("country", countrySearch);
    grabberintent.putExtra("mode", mode);
    this.startActivity(grabberintent);
}

public String getCitySearch() {
    return citySearch;
}

public String getStateSearch() {
    return stateSearch;
}

public String getCountrySearch() {
    return countrySearch;
}

public void setMode(String m) {
    mode = m;
}

public String getMode() {
    return mode;
}

class onCountrySelectedListener implements AdapterView.OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
                               View view, int pos, long id) {
        Toast.makeText(parent.getContext(), "The Country is " +
                parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
        countrySearch = parent.getItemAtPosition(pos).toString();
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

class onStateSelectedListener implements AdapterView.OnItemSelectedListener {
    @Override
    public void onItemSelected(AdapterView<?> parent,
                               View view, int pos, long id) {
        Toast.makeText(parent.getContext(), "The State is " +
                parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
        stateSearch = parent.getItemAtPosition(pos).toString();
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

}

Вот код XML

    >

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="48dp"

        android:background="@drawable/header_bg_hdpi"
        android:tileMode="repeat"
        android:gravity="center_vertical"

        >
    <TextView
            android:text="@string/title_search"
            style="@style/TitleText"
            android:gravity="left"
            android:layout_weight="1"
            >
    </TextView>


    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/dgcr_logo"
            android:gravity="right"

            android:layout_weight="1"


            />

</LinearLayout>



<TextView
        android:id="@+id/searchTitle"
        android:text="Search for Course By Location"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"/>
<EditText
        android:id="@+id/cityName"
        android:autoText="true"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:inputType="textAutoComplete"
        android:hint="City Name">


</EditText>

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="@string/states_prompt"
        />
<Spinner
        android:id="@+id/state"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:prompt="@string/states_prompt"

        >
</Spinner>
<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="@string/countries_prompt"
        />
<Spinner
        android:id="@+id/country"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:prompt="@string/countries_prompt"

        >
</Spinner>
/>
<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    <Button
            android:text="Search Address"
            android:id="@+id/search"
            android:background="@drawable/orange_gradient_button"
            style="@style/ButtonText"
            android:onClick="searchByLoc"
        android:layout_weight="1">
    </Button>

    <Button
            android:text="Search Map"
            android:id="@+id/button2"
            android:background="@drawable/orange_gradient_button"
            style="@style/ButtonText"
        android:layout_weight="1">
    </Button>
</LinearLayout>
<ImageView
        android:gravity=""
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentBottom="true"
        android:src="@drawable/footer_hdpi">
</ImageView>



</LinearLayout>

1 Ответ

0 голосов
/ 14 марта 2012

То, что вы делаете, правильно, но это не самый простой способ сделать это.Вам следует подумать о настройке файла макета (в res / layout / .xml), чтобы сделать большую часть того, что делает ваш onCreate ().Это также позволяет вам определять методы, которые будут вызываться при запуске действий.См. http://developer.android.com/guide/topics/ui/declaring-layout.html для примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...