我無法渲染自定義視圖內部回收站視圖小部件。傳統上,我們內部膨脹的RecylerView.Adapter類似觀點在RecyclerView小部件中使用自定義視圖
public RowLayoutViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.sample_view, viewGroup, false);
RowLayoutViewHolder rowLayoutViewHolder = new RowLayoutViewHolder(view);
return rowLayoutViewHolder;
}
這工作得很好,我們可以將數據綁定到裏面onBindViewHolder(...)方法的看法。但是當我嘗試創建ViewGroup的子類並像這樣使用時,我得到一個空白(「黑色」)屏幕。
public ImageGalleryAdapter.RowLayoutViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
SampleView view = new SampleView(context);
RowLayoutViewHolder rowLayoutViewHolder = new RowLayoutViewHolder(view);
return rowLayoutViewHolder;
}
這裏是我的SampleView類 -
public class SampleView extends ViewGroup {
public SampleView(Context context) {
super(context);
initView();
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
child.layout(l, t, l + 600, t + 200);
}
}
private void initView() {
inflate(getContext(), R.layout.sample_view, this);
TextView textView = (TextView) findViewById(R.id.sampleTextView);
textView.setTextColor(Color.WHITE);
textView.setText("Hello from textview");
}
}
這裏是佈局 -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/sampleTextView"
android:text="Sample TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
看着好像充氣佈局的源代碼行爲完全一樣創建一個視圖,除了通脹過程基於rootView將一個合適的LayoutParameter添加到子視圖。我試着手動添加,但沒有任何結果。
任何幫助將不勝感激。
確實看到了這個問題的任何解決方案,我有類似的問題,因爲我用我的回收站視圖查看持有人如何在其佈局具有自定義視圖,當我向後滾動,我滾動快回收視圖只是錯過了一些平局,並在屏幕上留下了一些前面的項目,從回收商視圖 – Sniper
我找到了一個解決方案。因爲我錯過了那些回滾視圖需要在滾動時重新填充所有內容的部分,所以我沒有填充我的佈局的每個部分,這非常重要,這就是爲什麼我看到其他子視圖的數據。 – Sniper