Я запустил бы с чего-то вроде этого (и если бы существует что-то не так с моим кодом, я, конечно, ценил бы любой комментарий):
public class ItemsList extends ListActivity {
private ItemsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.items_list);
this.adapter = new ItemsAdapter(this, R.layout.items_list_item, ItemManager.getLoadedItems());
setListAdapter(this.adapter);
}
private class ItemsAdapter extends ArrayAdapter<Item> {
private Item[] items;
public ItemsAdapter(Context context, int textViewResourceId, Item[] items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.items_list_item, null);
}
Item it = items[position];
if (it != null) {
ImageView iv = (ImageView) v.findViewById(R.id.list_item_image);
if (iv != null) {
iv.setImageDrawable(it.getImage());
}
}
return v;
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
this.adapter.getItem(position).click(this.getApplicationContext());
}
}
, Например, расширяющийся ArrayAdapter с собственным типом Объектов (содержащий информацию о Ваших изображениях) и переопределенный getView()
метод, который готовит представление к объектам в рамках списка. Существует также метод add()
на ArrayAdapter для добавления объектов до конца списка.
R.layout.items_list
простой макет с ListView
R.layout.items_list_item
, расположение, представляющее один объект в списке
Чтобы получить данные из базы данных, вы должны использовать SimpleCursorAdapter
.
Я думаю, вы можете напрямую связать SimpleCursorAdapter
с ListView
- если нет, вы можете создать собственный класс адаптера, который расширяет SimpleCursorAdapter с помощью пользовательского ViewBinder
, который переопределяет setViewValue
.
Посмотрите на Руководство по созданию блокнота , чтобы узнать, как использовать SimpleCursorAdapter
.
Имя файла должно соответствовать идентификатору макета, который в этом примере: items_list_item.xml в папке макета вашего приложения
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView android:id="@+id/R.id.list_item_image"
android:layout_width="100dip"
android:layout_height="wrap_content" />
</LinearLayout>