我通过XML初始化Listview:
<com.example.app.ListViewManage
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="45dp"
/>
和我不能管理初始化类中的列表有办法吗?
类代码:我试图设置init()
函数,如果这个类传递给XML,我怎么能从另一个类传递值呢?
public class ListViewManage extends ListView{
int HEADER_HEIGHT = 45;
int HeaderID = 0;
Context context = null;
int HeightInPixels = 0;
int WidthInPixels = 0;
float alphaScale = 0;
float PrevAlpha = 0;
public ListViewManage(Context context) {
super(context);
init(context);
}
public ListViewManage(Context context,AttributeSet attrs){
super(context, attrs);
}
public ListViewManage(Context context,AttributeSet attrs,int defStyle){
super(context, attrs,defStyle);
}
public void init(Context context){
this.context = context;
DisplayMetrics dm = context.getResources().getDisplayMetrics();
this.HeightInPixels = dm.heightPixels;
this.WidthInPixels = dm.widthPixels;
this.alphaScale = this.HEADER_HEIGHT/this.HeightInPixels;
FrameLayout.LayoutParams fl=(FrameLayout.LayoutParams)getLayoutParams();
fl.topMargin=HEADER_HEIGHT;
setLayoutParams(fl);
ArrayAdapter<YTFileDownload> ListAdapter = new ArrayAdapter<YTFileDownload>(context,R.layout.download_list_view,R.id.Title,YTDownloadsManage.Downloads){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ProgressBar bar =(ProgressBar)v.findViewById(R.id.Process);
bar.setProgress(0);
TextView tv = (TextView)v.findViewById(R.id.Title);
tv.setText(YTDownloadsManage.Downloads.get(position).getVideoID());
TextView tv2 = (TextView)v.findViewById(R.id.Speed);
tv2.setText("0MB");
return v;
}
};
LayoutInflater li=LayoutInflater.from(context);
this.setAdapter(ListAdapter);
}
}
ListViewManage mlv = (ListViewManage) findViewById(R.id.list);
mlv.setAdapter(adapter);
在你的getView()方法中,我认为你应该错过:
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.custom_listview_item, null);
adapter.notifyDataSetChanged();