Как правильно использовать инфлятор LayoutInflater - PullRequest
0 голосов
/ 03 апреля 2012

Я создал дизайн макета, используя только код Java, а не из макетов XML. Код, который я использовал, следующий

 public View getView(int position, View convertView, ViewGroup parent) {
  TextView tv = new TextView(mContext);
  tv.setText(hotelList.get(position).name);
  return tv;
  }

Как использовать layoutInflator для создания макета. Мне нужно еще 2 просмотра текста в одном элементе списка. весь список содержит 10 различных элементов списка

Пожалуйста, предоставьте несколько кодов для этого. Помощь оценена

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Я прошел через это раньше, имея свой статический класс тоже. Проверьте это, это поможет:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View rowView = convertView;


        if ( rowView == null) {

            LayoutInflater inflator = this._activity.getLayoutInflater();
            rowView = inflator.inflate(R.layout.todolistlisting, null);
            TodoListViewHolder viewHolder = new TodoListViewHolder();
            viewHolder._name        = (TextView) rowView.findViewById(R.id.tVTLName);           
            viewHolder._completed   = (TextView) rowView.findViewById(R.id.tVTLCCount);
            viewHolder._remaining   = (TextView) rowView.findViewById(R.id.tVTLRCount);
            rowView.setTag(viewHolder);

        }

        TodoListViewHolder holder = (TodoListViewHolder) rowView.getTag();
        VO_TodoList votodolist = this._items.get(position);         
        holder._name.setText(votodolist._title);            
        holder._completed.setText(votodolist._completed);
        holder._remaining.setText(votodolist._remaining);

        return rowView;     

    }

TodoListViewHolder - мой держатель компонента вида здесь. как ваш TextView.

2 голосов
/ 03 апреля 2012

Я думаю, вы знаете, как сделать XML-макет для этого макета. Так что просто создайте XML-макет и получите объект основного макета, используя следующий код:

LinearLayout mainLayout=(LinearLayout) View.inflate(R.layout.yourlayout); //if yourlayout.xml is the name of the xml file you made and put in the layout folder.

Чтобы получить дочерний элемент макета, скажем, если это TextView с идентификатором text, то код будет:

TextView textView=(TextView)mainLayout.findViewById(R.id.text);
0 голосов
/ 03 апреля 2012

Вы можете добавить представление во время выполнения, используя инфлятор:

LinerLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.news_categories_item, null);

TextView categoryValueTextView = (TextView)linearLayout.findViewById(R.id.news_category_item_value);

mMainLinearLayout.addView(categoryValueTextView);

Здесь я надуваю одно текстовое представление, которое присутствует в другом линейном макете (это простой линейный макет, который содержит только текстовое представление) во время выполнения, и добавляю его в мой основной линейный макет.

Вы можете получить объект инфляции в вашей активности, используя getLayoutInflater (). И если вы хотите получить инфлятор в адаптере, вы должны передать объект инфлятора конструктору адаптера из вашей деятельности.

...