2014-01-15 2 views
0

Im с помощью адаптера массива с учетом списка выглядит следующим образом:Использование одного атрибута объекта для Android массива адаптера

ArrayList<Store> allStores = dm.getAll(Store.class); 

ArrayAdapter<Store> adapter = new ArrayAdapter<Store>(context,R.layout.listview_layout, R.id.textView1, allStores); 

ListView mylist = (ListView) view.findViewById(R.id.listViewFromDb); 
mylist.setAdapter(adapter); 

массив, который я прохожу в ListView является массивом объектов. В тот момент, когда список распечатывает все атрибуты объекта, можно просто напечатать первый атрибут объекта так, «имя». Пожалуйста, помогите

ответ

0

Расширьте ArrayAdapter и переопределите метод getView, используя аргумент position для доступа к элементу массива. Вот пример из Vogella:

Следующий пример не перерабатывает представления, поэтому имейте это в виду, так как это повлияет на производительность (на некоторых устройствах очень много).

package de.vogella.android.listactivity; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MySimpleArrayAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] values; 

    public MySimpleArrayAdapter(Context context, String[] values) { 
    super(context, R.layout.rowlayout, values); 
    this.context = context; 
    this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    textView.setText(values[position]); 
    // Change the icon for Windows and iPhone 
    String s = values[position]; 
    if (s.startsWith("iPhone")) { 
     imageView.setImageResource(R.drawable.no); 
    } else { 
     imageView.setImageResource(R.drawable.ok); 
    } 

    return rowView; 
    } 
} 
Смежные вопросы