2017-04-30 6 views
0

のように私は、私は、次のrecyclerviewを動的テンプレートにすることはできますか?例えば

return new TransactionViewHolder(rowTemplate); 

でき、この仕事をしようとリサイクルのviewholderに続いビュー

LinearLayout rowTemplate = new LinearLayout(getContext()); 

を作成しますか? 。通常、私たちは私がRVにも自分自身にこのrowtemplateを添付できるようにビューを膨らませるだろうかわからないよ次

return new TransactionViewHolder(((RelativeLayout) inflater.inflate(R.layout.employee_item, parent, false))); 

を行います。私は実際にこのようなことを計画しており、誰かがこれに関するヒントを持っているかどうか尋ねることを考えました。

+0

正常に動作しますか?あなたはそれを試したとき何が起こったのですか? – nasch

+0

いいえ、それはありませんでした。しかし、かなり簡単な回避策がありました。 –

+0

ルートだけで空のアイテムレイアウトを膨張させます。ビューアコンストラクタの新たなオーバーロードを作成し、この動的ビューと膨張したビューを使用します。その後、コンストラクタでinflatedview.addview(dynamicview)と言う。あなたの答えとしてコードを投稿してください。 –

答えて

0

それはinflater.inflate(viewResource、parent、false)なしではうまくいきません。その理由は、既にビューが作成されているにもかかわらず、RVの親にそれを添付していないため、RVの中に浮かんでいる孤児であるということです。ここで

は、RV車はリサイクルだけでなく、そのまま続けて良い回避策はTransactionViewHolderコンストラクタで必要な動作

// Create new views (invoked by the layout manager) 
@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, 
                int viewType) { 

    LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
    if (viewType == TYPE_TRANSACTION) { 
     return new TransactionViewHolder(((RelativeLayout) inflater.inflate(R.layout.transaction_item, parent, false)), ((LinearLayout) createRowTemplate(templateTransaction))); 
    } else { 
     return new LoadHolder(inflater.inflate(R.layout.load_item, parent, false)); 
    } 
} 

を発揮されて次の操作を行います。

public TransactionViewHolder(RelativeLayout rowRootView, LinearLayout rowTemplate) { 
      super(rowRootView); 
      this.rowRootView = rowRootView; 
      this.rowRootView.addView(rowTemplate); 

      rowRootView.setOnClickListener(this); 
     } 
関連する問題