ListView с пользовательским макетом для каждой строки - PullRequest
0 голосов
/ 31 марта 2012

Я настроил просмотр списка с макетом XML для каждой строки:

    this.setContentView(R.layout.item_view);

    ListView m_ListView = this.getListView();
    m_ListView.setTextFilterEnabled(true);
    m_ListView.setItemsCanFocus(false);
    m_ListView.setCacheColorHint(0x00000000);
    mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    ArrayList<View> views=new ArrayList<View>();
    e = mInflater.inflate(R.layout.item_first, null);

    views.add(e);

    r = mInflater.inflate(R.layout.item_second, null);

    views.add(r);


    mAdapter = new SillyAdapter(views);
    setListAdapter(mAdapter);

, например, теперь у меня есть TextView в item_first, и я хочу установить его из кода:

    TextView name = (TextView)findViewById(R.id.textView1);
    name.setText(m_item.name);

но имя всегда пустое. Можно понять, почему это произошло?

1 Ответ

1 голос
/ 31 марта 2012

Вы должны внести следующие изменения в свой код.

TextView name = (TextView)e.findViewById(R.id.textView1);
name.setText(m_item.name);

Вы получаете имя как нулевое, поскольку вы вызываете метод findViewById из неправильного представления или, возможно, вызываете из действия.так как вы надуваетесь следующим образом

 e = mInflater.inflate(R.layout.item_first, null);

, вы должны вызвать findViewById в раздутом виде e .так что вы получите экземпляр textview с идентификатором R.id.textView1 , содержащимся в xml R.layout.item_first

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...