ListActivity с пользовательским объектом Android - PullRequest
0 голосов
/ 29 декабря 2011

Я хочу заполнить класс активности списка моим пользовательским объектом Person, я написал следующий код

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    liPerson = new ArrayList<Person>();
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd");
    liPerson.add(person);
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd");
    liPerson.add(person);
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd");
    liPerson.add(person);
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd");
    liPerson.add(person);
    Person[] persons = (Person[]) liPerson.toArray();
    setListAdapter(new MyAdapter(this, 
            android.R.layout.simple_list_item_1,
            persons));
}

private class MyAdapter extends ArrayAdapter<Person> {
    private Person[] persons;
    public MyAdapter(Context context, int resource, Person[] persons) {
        super(context, resource, persons);
        // TODO Auto-generated constructor stub
        this.persons = persons;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.list_item, parent, false);
        //String[] items = getResources().getStringArray(R.array.countries);
        Person p = persons[position];
        ImageView iv = (ImageView) row.findViewById(R.id.imageView1);
        TextView tv = (TextView) row.findViewById(R.id.textView1);

        tv.setText(p.getName());

        String mDrawableName = "bd";
        int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
        iv.setImageResource(resID);


        return row;
    }
}

Это не работает. Я могу заполнить список действий из моего файла XML, но я хочу, чтобы это был мой пользовательский объект.

1 Ответ

1 голос
/ 29 декабря 2011

Просто передайте весь ArrayList в ArrayAdapter.Затем вы можете получить свой объект с помощью getItem (position). "Ваш метод здесь"

ArrayList<Person> personList = new ArrayList<Person>();

    ArrayAdapter<Person> adapter = new ArrayAdapter<Person>(this,
            R.layout.person_item, personList) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row;

            if (null == convertView) {
                row = mInflater.inflate(R.layout.person_item, null);
            } else {
                row = convertView;
            }

            TextView tView = (TextView) row.findViewById(R.id.tvName);
            tView.setText(getItem(position).getName()); // This is where you get the name from your object

            return row;
        }
    };
...