gridView に画像を表示しようとしています。画像は、ElasticSearch サーバーでの調査に基づいています。ユーザーがテキストフィールドにキーワードを入力すると、ElasticSearch でのクエリの結果が文字列 (画像の URL) のリストになり、画像が gridView に表示されます。
調査を行うためにボタンを押したときのアクション:
public void sendMessage(View view){
imgAdapter.clearmThumbIds(); //mThumbs is a list of string (urls image)
gridView = (GridView) findViewById(R.id.grid_view);
EditText editText = (EditText) findViewById(R.id.searchBar);
String message = editText.getText().toString();
try {
eSearchElastic.ESE(imgAdapter,message);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Etape 2");
gridView.setAdapter(imgAdapter);
}
eSearchElastic.java
public static void ESE (final ImageAdapter imgAdapter,final String keyword)throws ClientProtocolException, IOException {
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
//Build the query, connect to ElasticServer and receive a list or urls of image as answer
System.out.println("Etape 1");
return null;
}
};
task.execute();}
そして、Etape1 の前に Etape2 を印刷した結果、この行「gridView.setAdapter(imgAdapter)」は、eSearchElastic のバックグラウンド プロセス/スレッドが終了した後にのみ実行されます。どうやってやるの?