You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
ListView: implement header and footer Views
Underlying HeaderViewListAdapter class is copied from AOSP
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package android.widget;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
@@ -7,6 +8,21 @@ import android.view.View;
|
||||
|
||||
public class ListView extends AbsListView {
|
||||
|
||||
static class FixedViewInfo {
|
||||
public View view;
|
||||
public Object data;
|
||||
public boolean isSelectable;
|
||||
|
||||
public FixedViewInfo(View view, Object data, boolean isSelectable) {
|
||||
this.view = view;
|
||||
this.data = data;
|
||||
this.isSelectable = isSelectable;
|
||||
}
|
||||
}
|
||||
|
||||
private ArrayList<FixedViewInfo> headerViews = new ArrayList<FixedViewInfo>();
|
||||
private ArrayList<FixedViewInfo> footerViews = new ArrayList<FixedViewInfo>();
|
||||
|
||||
public ListView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
@@ -15,35 +31,72 @@ public class ListView extends AbsListView {
|
||||
super(context, attributeSet);
|
||||
}
|
||||
|
||||
public ListView(Context context, AttributeSet attributeSet, int defStyleAttr) {
|
||||
super(context, attributeSet, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAdapter(ListAdapter adapter) {
|
||||
if (getHeaderViewsCount() > 0 || getFooterViewsCount() > 0) {
|
||||
adapter = new HeaderViewListAdapter(headerViews, footerViews, adapter);
|
||||
}
|
||||
super.setAdapter(adapter);
|
||||
}
|
||||
|
||||
public int getDividerHeight() {return 0;}
|
||||
|
||||
public Drawable getDivider() {return null;}
|
||||
|
||||
public void setTextFilterEnabled(boolean enabled) {}
|
||||
|
||||
public void addHeaderView(View v, Object data, boolean isSelectable) {}
|
||||
public void addHeaderView(View v, Object data, boolean isSelectable) {
|
||||
headerViews.add(new FixedViewInfo(v, data, isSelectable));
|
||||
if (getAdapter() instanceof HeaderViewListAdapter) {
|
||||
observer.onChanged();
|
||||
} else if (getAdapter() != null) {
|
||||
setAdapter(getAdapter());
|
||||
}
|
||||
}
|
||||
|
||||
public void setDrawSelectorOnTop(boolean dummy) {}
|
||||
|
||||
public void addHeaderView(View view) {}
|
||||
public void addHeaderView(View view) {
|
||||
addHeaderView(view, null, true);
|
||||
}
|
||||
|
||||
public boolean removeHeaderView(View view) { return true; }
|
||||
public boolean removeHeaderView(View view) {
|
||||
boolean result = false;
|
||||
if (getAdapter() instanceof HeaderViewListAdapter)
|
||||
result = ((HeaderViewListAdapter)getAdapter()).removeHeader(view);
|
||||
if (result)
|
||||
observer.onChanged();
|
||||
return result;
|
||||
}
|
||||
|
||||
public int getHeaderViewsCount() {
|
||||
return 0;
|
||||
return headerViews.size();
|
||||
}
|
||||
|
||||
public int getFooterViewsCount() {
|
||||
return 0;
|
||||
return footerViews.size();
|
||||
}
|
||||
|
||||
public void setDivider(Drawable drawable) {}
|
||||
|
||||
public void setSelectionFromTop(int position, int y) {}
|
||||
|
||||
public void addFooterView(View v, Object data, boolean isSelectable) {}
|
||||
public void addFooterView(View v, Object data, boolean isSelectable) {
|
||||
footerViews.add(new FixedViewInfo(v, data, isSelectable));
|
||||
if (getAdapter() instanceof HeaderViewListAdapter) {
|
||||
observer.onChanged();
|
||||
} else if (getAdapter() != null) {
|
||||
setAdapter(getAdapter());
|
||||
}
|
||||
}
|
||||
|
||||
public void addFooterView(View v) {}
|
||||
public void addFooterView(View v) {
|
||||
addFooterView(v, null, true);
|
||||
}
|
||||
|
||||
public void setDividerHeight(int height) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user