package ca.ualberta.cs.cmput301f14t14.questionapp;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import ca.ualberta.cs.cmput301f14t14.questionapp.data.Callback;
import ca.ualberta.cs.cmput301f14t14.questionapp.data.GenericSearchItem;
import ca.ualberta.cs.cmput301f14t14.questionapp.data.threading.ESSearchTask;
import ca.ualberta.cs.cmput301f14t14.questionapp.view.GenericSearchItemAdapter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
public class SearchActivity extends Activity {
public static final String ARG_QUERY_STRING = "QUERY_STRING";
private GenericSearchItemAdapter listAdapter = null;
private List<GenericSearchItem> searchResult = null;
private String query;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
Intent intent = getIntent();
query = intent.getStringExtra(ARG_QUERY_STRING);
searchResult = new ArrayList<GenericSearchItem>();
listAdapter = new GenericSearchItemAdapter(
this, R.layout.list_generic, searchResult);
ListView questionView = (ListView) findViewById(R.id.search_list);
questionView.setAdapter(listAdapter);
questionView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// run off to the correct view if you tap an item
final GenericSearchItem gItem = listAdapter.getItem(position);
if (gItem.getType().toLowerCase(Locale.US).trim().equals("question")) {
UUID qId = gItem.getId();
Intent intent = new Intent(getApplicationContext(),
QuestionActivity.class);
intent.putExtra(QuestionActivity.ARG_QUESTION_ID, qId.toString());
startActivity(intent);
} else if (gItem.getType().toLowerCase(Locale.US).trim()
.equals("answer")) {
UUID aId = gItem.getId();
Intent intent = new Intent(getApplicationContext(),
AnswerViewActivity.class);
intent.putExtra("ANSWER_UUID", aId.toString());
startActivity(intent);
}
}
});
}
@Override
protected void onResume() {
super.onResume();
ESSearchTask esTask = new ESSearchTask(this);
esTask.setCallBack(new SearchResultCallback());
esTask.execute(query);
}
private class SearchResultCallback implements Callback<List<GenericSearchItem>> {
@Override
public void run(List<GenericSearchItem> list) {
searchResult.clear();
searchResult.addAll(list);
listAdapter.update();
}
};
}