2014-01-07 5 views
0

У меня есть POJO так:Как я могу заполнить ArrayAdapter объектами?

public class Color { 
private int id; 
private int name; 
//getter setter 
} 

В моей AsyncTask я называю сервер и получить кучу этих объектов, а затем хочу, чтобы заполнить свой список. Я делаю это:

@Override 
    protected String doInBackground(String... strings) { 
     colorsList = MyManager.INSTANCE.getService().getColors(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String file_url) { 
     setListAdapter(new ArrayAdapter<Color>(MyActivity.this,R.layout.list_black_text,R.id.name, colorsList)); 
    } 

list_black_text выглядит, как показано ниже:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <!-- hidden color id--> 
    <TextView 
    android:id="@+id/color_id" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone" /> 

    <!--color name--> 
    <TextView 
     android:id="@+id/name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="16dip" 
     android:textColor="#000000" 
     android:paddingTop="15dip" 
     android:paddingBottom="15dip" 
     android:paddingLeft="10dip" 
     android:textStyle="bold"/> 
</RelativeLayout> 

Вопрос

Когда я запустить приложение в списке, кажется, заполняется объектами, так что я вижу его заселена с такими материалами, как

[email protected] 
[email protected] 
... 

Что мне нужно изменить, чтобы я мог видеть имя цвета в списке?

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

ответ

0

В списке используется метод toString переданного объекта для отображения. Итак, если вы хотите отображать имена цветов, просто добавьте переменную имени, переопределите метод toString и верните имя цвета.

public class Color { 
    private int id; 
    private int name; 
    private String strName; 
    public String toString(){return this.strName;} 
    //getter setter 
} 
+0

Спасибо. Я только что обновил вопрос запиской. Кроме того, я хочу иметь возможность обнаруживать «ID» имени цвета, которое пользователь нажимал. Итак, если я просто перезаписал 'toString', я бы не смог обнаружить, какой пользователь' ID' щелкнул справа.? – birdy

+0

Вы все еще можете получить идентификатор. Объект 'ColorWrapper' содержит объект' Color', который содержит идентификатор. Когда пользователь выбирает элемент, получает выбранный ColorWrapper, получает объект цвета из обертки, тогда вы можете получить свой идентификатор. –

+0

Спасибо. Дай мне попробовать. – birdy

Смежные вопросы