Как изменить значения во втором макете в той же деятельности? - PullRequest
1 голос
/ 19 декабря 2010

Мой сценарий состоит в том, что у меня есть действие, которое показывает курсор, хранящийся в БД SQLite.Основной макет содержит текстовое представление сверху и список просмотра.А затем я использую simplecursoradapter, чтобы заполнить курсор в listadapter и поместить listadapter в listview.simplecursoradapter использовать другой макет.Теперь проблема в том, что когда я использую simplecursoradapter, я добавляю три списка в представление списка, например: имя элемента, дату и цену.Это нормально, если я не изменю эти значения.

На самом деле я хочу добавить некоторую строку в цену и сформировать новую строку, такую ​​как знак валюты.Насколько я понимаю, мы можем установить ContentView только для одного макета, а не для двух.Я также попытался заполнить новый макет и установить значение, но не смог

LayoutInflater inflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);View textEntryView = inflater.inflate (R.layout.itemlist, null);TextView price = (TextView) textEntryView.findViewById (R.id.price);price.setText (currency + c.getString (4) .toString ());

Даже в синтаксисе и запуске приложений нет проблем.Но когда я запускаю приложение и проверяю просмотр списка, цена все равно показывает цену только без добавления знака валюты.Я могу только добавить знак валюты под основным макетом, а не вторым макетом, используемым в simplecursoradapter.

Фактически валюта выбирается в предпочтениях пользователя, и я использую sharedpreference, чтобы получить ее значение и добавить к значению цены в курсоре.Кажется, что simplecursoradapter использует другую компоновку, поэтому не может этого сделать.

У кого-нибудь есть идеи по этому поводу?

Буду признателен, если для аналогичного подхода будут предоставлены методы и коды.

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 22 декабря 2010

Наконец я использовал bindview для решения своей проблемы. В своем вопросе я уже упоминал, что я использую simplecursoradapter для получения данных из массива SQLiteDB. Я знаю, что arrayadapter работает, но он не работает эффективно для SQLite. Прежде чем я расширил baseadapter, чтобы создать свой собственный, чтобы добавить пользовательские представления для текстовых представлений. Это работает, но слишком медленно, если есть много данных. Поэтому simplecursoradapter более эффективен.

Я расширил simplecursoradapter и переопределил bindview для своих собственных целей. Это работает для того, что мне нужно.

Спасибо за вашу помощь и ссылку для arrayadapter

0 голосов
/ 19 декабря 2010

Я не уверен, что следую вашему вопросу на 100%, так что это может быть не совсем тот ответ, который вы ищете.

Если вы хотите контролировать внешний вид элементов впредставление списка, вы должны сделать свою собственную пользовательскую реализацию ArrayAdapter:

ListAdapter, который управляет ListView, поддерживаемым массивом произвольных объектов.(...) Чтобы использовать что-то кроме TextViews для отображения массива, например ImageViews, или чтобы некоторые данные помимо результатов toString () заполняли представления, переопределите getView (int, View, ViewGroup), чтобы вернуть типпросмотрите желаемое.

Если вы просто настроили google для пример нестандартного адаптера массива , вы должны найти достаточно примеров, показывающих, как это реализовать.Два таких примера:

Удачи:)

...