Позвольте мне попытаться ответить на вопрос здесь с примером :) - MyImageSearch [Пожалуйста, посмотрите изображение здесь на главном экране активности - содержащее текст редактирования / кнопку поиска / вид сетки]
Описание MyImageSearch - Как только пользователь введет детали в поле для редактирования текста и нажмет на кнопку поиска, мы будем искать изображения на Интернет через веб-сервисы, предоставляемые flickr (вам нужно только зарегистрироваться там, чтобы получить ключ / секретный токен) - для поиска мы отправляем HTTP-запрос и ПОЛУЧАЕМ JSON-данные обратно в ответ, содержащие URL-адреса отдельных изображений, которые мы затем будем использовать загрузить вид сетки.
Моя реализация - В основном задании я определю внутренний класс, который расширяет AsyncTask для отправки HTTP-запроса в метод doInBackGround, извлечения ответа JSON и обновления моего локального ArrayList из FlickrItems, который Я собираюсь использовать для обновления моего GridView через FlickrAdapter (расширяет BaseAdapter) и вызывать adaptor.notifyDataSetChanged () в onPostExecute () AsyncTask для перезагрузки вида сетки. Обратите внимание, что здесь HTTP-запрос является блокирующим вызовом, из-за которого я сделал это через AsyncTask. И я могу кэшировать элементы в адаптере, чтобы увеличить производительность или сохранить их на SDCard. Сетка, которую я буду раздувать в FlickrAdapter, содержит в моей реализации индикатор выполнения и представление изображения. Ниже вы можете найти код для mainActivity, который я использовал.
Ответ на вопрос сейчас - Таким образом, когда у нас есть данные JSON для выборки отдельных изображений, мы можем реализовать логику получения изображений в фоновом режиме с помощью обработчиков или потоков или AsyncTask. Здесь следует отметить, что, поскольку мои загруженные изображения должны отображаться в пользовательском интерфейсе / главном потоке, мы не можем просто использовать потоки в том виде, как они есть, поскольку они не имеют доступа к контексту. В FlickrAdapter я мог придумать варианты:
Вот исходный код:
public class MainActivity extends ActionBarActivity {
GridView imageGridView;
ArrayList<FlickrItem> items = new ArrayList<FlickrItem>();
FlickrAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageGridView = (GridView) findViewById(R.id.gridView1);
adapter = new FlickrAdapter(this, items);
imageGridView.setAdapter(adapter);
}
// To avoid a memory leak on configuration change making it a inner class
class FlickrDownloader extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
FlickrGetter getter = new FlickrGetter();
ArrayList<FlickrItem> newItems = getter.fetchItems();
// clear the existing array
items.clear();
// add the new items to the array
items.addAll(newItems);
// is this correct ? - Wrong rebuilding the list view and should not be done in background
//adapter.notifyDataSetChanged();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
adapter.notifyDataSetChanged();
}
}
public void search(View view) {
// get the flickr data
FlickrDownloader downloader = new FlickrDownloader();
downloader.execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Я надеюсь, что мой ответ, хотя долго, поможет в понимании некоторых из более мелких деталей.
Меню => Вид => Список задач
В поле со списком выберите «Комментарии»
//todo: whatever
//TODO: work on blah blah
//Todo new screenshot
Все работает (по крайней мере, в 2008 году и, вероятно, в предыдущих версиях).
В Visual Studio щелкните меню «Вид», затем «Список задач». Используйте раскрывающийся список в верхнем левом углу списка задач, чтобы просмотреть «Комментарии».
Дополнительная информация: HACK и UNDONE также являются ключевыми словами, которые отображаются в списке.
Чтобы добавить свои собственные ключевые слова, просмотрите Меню «Инструменты»> «Параметры», выберите узел «Среда», затем узел «Список задач».
Да, это тоже
//TODO: My task
Вы можете узнать, какие задачи вам нужно выполнить, просмотрев «Список задач»
Попробуйте следующее
Теперь будут отображаться все Комментарии TODO, найденные в вашей базе кода, которые появляются внутри комментариев.
Да. Прочтите этот пост :
Во время работы с файлом вы можете открыть окно списка задач ( CTRL + \ , CTRL + T ), откройте это раскрывающееся меню и выберите «Комментарии».