Я нахожу решение, используя ViewHolder :
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);
holder.layoutOperative = convertView.findViewById(R.id.layout_list_item);
holder.txtOne = convertView.findViewById(R.id.text_one);
holder.txtTwo = convertView.findViewById(R.id.text_two);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mBuildingsList.get(position).isOperative()) {
holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_active);
} else {
holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_inactive);
}
holder.txtOne.setText(mList.get(position).getPropertyOne());
holder.txtTwo.setText(mList.get(position).getPropertyTwo());
return convertView;
}
Спасибо всем!
Да, замок из песка поддерживает это, и замечательно поддержать правильность примеров. Можно указать на регион кода как это:
/// <summary>
/// Gizmo which can act as client or server.
/// </summary>
/// <example>
/// The following example shows how to use the gizmo as a client:
/// <code lang="cs"
/// source="..\gizmo.unittests\TestGizmo.cs"
/// region="GizmoClientSample"/>
/// </example>
public class Gizmo
Можно затем использовать некоторый тестовый код в TestGizmo.cs как пример путем включения его в регион:
[Test]
public GizmoCanActAsClient()
{
#region GizmoClientSample
Gizmo gizmo = new Gizmo();
gizmo.ActAsClient();
#endregion
}
Протест: Если Вы переместите или переименуете тестовый файл, то Вы только получите ошибку об этом, когда Вы попытаетесь повторно создать документацию с замком из песка.
Я не сделал этого сам, но я видел упомянутый в Прагматических книгах Программистов. Если я не ошибаюсь, книга "Прагматическое Поблочное тестирование в C# с Nunit" упоминает, что они сделали это для книги. Могло случиться так, что они упомянули в одном из их подкастов все же.
Они упомянули, что у них был непрерывный сервер сборки, настроенный для их книг. Если я не ошибаюсь, они использовали латекс или некоторую другую основанную на тексте разметку для записи их книг в, и у них были шаги сборки для форматирования разметки и кода создания и поблочного тестирования в книге.
Простое решение: Подайте небольшую заявку, в которой Вы включаете все заголовки примера кода и затем называете их соответствующие точки входа
#include "samples/sampleA.h"
void main()
{
SomeFunction();
}
затем после того, как Вы заставляете сборку запустить эти небольшие приложения, необходимо быть уверены, что они работали хорошо. Но можно ли проверить, что код работал хорошо, не имея кого-то, имеют вечеринку с ночевкой с сервером NightlyBuild?
Лучшее Решение: Зарегистрируйте вывод и сделайте, чтобы кто-то посмотрел на него утром.
Еще Лучшее Решение: Зарегистрируйте вывод и grep это или что-то так, что никто не должен смотреть на него если его поврежденный.
Лучшее решение: Найдите подходящую среду тестирования, надо надеяться, что-то со всеми дополнительными свойствами, которые можно получить так, она может послать людям по электронной почте если его поврежденный или что-то как этот. В нашем случае мы избегаем дополнительных свойств вместо этого, мы соединились, USB управляют на основе политик Сиреной, которая уходит, когда что-то повреждается, Это довольно захватывающе!
Я предложил бы использовать специальный бит разметки в Вашем XML, который говорит, "Захватите пример кода от этого места". Это относилось бы к нормальному файлу C#, который может быть выполнен с модульными тестами. Для взятия примера Вы могли бы иметь:
/// <summary>Summary here</summary>
/// <example>Here is an example
/// <code>!!sourcefile:SomeClassTest.cs#SomeFunction!!</code></example>
public void SomeFunction()
Ваши модульные тесты, выполненные как нормальные, и затем, вставляют шаг сборки между, "создают XML", и "выполняют Замок из песка", Вы заменили бы каждый "маркер файла" соответствующим содержанием. Могут даже быть рычаги, которые Вы могли поместить в Замок из песка, чтобы сделать это во время поколения документа - я не знаю достаточно о Замке из песка для знания наверняка.
Это ужасно для изобретения собственной разметки, конечно, но это должно работать.
Конечно, это предполагает, что примеры кода являются легко тестируемой единицей - некоторые не могут быть (если они имеют дело с ресурсами и т.д.). По крайней мере, Вы знали бы, что это компилирует хотя :)