私はここでいくつかのスレッドを実行しましたが、例と一致しているように感じていますが、なぜそれがわからなくても動作しません。AsyncTaskで動的にスピナーにアイテムを追加する
私はAsyncTaskRunnerクラスで、REST APIから情報を取得してから、onPostExecuteでSpinnerに追加しようとしていますが、私のアプリケーションをデバッグ/実行するときは、空の。 webChannelListをデバッグするときに、空ではなく内容があることを確かめてください。
動的に何かを追加しようとしないで、onCreateメソッドで手作業で追加するだけではうまくいきます。それを動的に行う。
私が行ったMainActivityでSOが通過したと言われましたが、動作しません。助けて!
解決策:私はdoInBackground機能でDebug.waitForDebugger();
を持っていました...一度削除してしまえば、それは完全に機能しました。
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/singularSpinner" />
は私が求めているものに関連していないものをommited
public class MainActivity extends AppCompatActivity {
// Global Variables
private List<String> webChannelList = new ArrayList<String>();
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Load Singular Web Channels into GUI
AsyncTaskRunner runner = new AsyncTaskRunner(this);
runner.execute();
}
class AsyncTaskRunner extends AsyncTask<Void, Void, Void> {
MainActivity mainActivity;
@Override
protected Void doInBackground(Void... params) {
Debug.waitForDebugger(); //REMOVING THIS WORKS
webChannelList = StuffFromAPI();
return null;
}
@Override
protected void onPostExecute(Void result) {
if (!webChannelList.isEmpty()) {
spinner = (Spinner) findViewById(R.id.singularSpinner);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter =
new ArrayAdapter<String>(mainActivity, android.R.layout.simple_spinner_item, webChannelList);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
}
}
}
EDIT:はので、私は "hello" を手動でwebChannelList.add(とStuffFromAPI()関数と追加したものをommited );私はStuffFromAPI()関数から完璧に走った。不思議なことに、コメントして手動で追加したにもかかわらず。ほとんどそれはキャッシングのようですか?しかし、今私はそれを複製することはできません..何かが起こっていると私は何を知っていません。私はAndroid開発の初心者ですビルド - >実行またはビルド - >デバッグに行き、タブレットが添付されている。
EDIT 2:私のAPIの項目を取得する前にonPostExecute関数が実行されている可能性はありますか?これはまだ意味がありません。なぜなら、デバッグ時にコンテンツを物理的に見ることができるからです。でも、GUIでは表示されません。
'StuffFromAPI()'メソッドから文字列のリストを取得していることを確認しましたか? –
@ AjayP.Prajapatiはい、私がチェックした最初のことです。私はそこにブレークポイントを置いて、私が追加しようとしているStringコンテンツをはっきりと見ています。ご回答ありがとうございます – user1189352