我有一个arraylist的自定义适配器。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ProgressBar android:id="@+id/downloadprogress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />
<TextView android:id="@+id/tripsname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
但是当我尝试访问适配器中的进度条时
private class MyAdapter extends ArrayAdapter<Trip> {
int resource;
public MyAdapter(Context context, int resource, ArrayList<Trip> items) {
super(context, resource,items);
this.resource=resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout tripListItemView;
final Trip t = getItem(position);
String name = t.getName();
boolean offline = t.isOffline() ;
if(convertView==null) {
tripListItemView = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi;
vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, tripListItemView, true);
}
else {
tripListItemView = (LinearLayout) convertView;
}
setProgressBarVisibility(true);
View v = findViewById(R.id.downloadprogress);
ProgressBar progressHorizontal = (ProgressBar) findViewById(R.id.downloadprogress);
它总是返回null,就像它找不到进度条一样。但是,进度条显示在列表中,但我需要在适配器内访问它。
有人知道解决方案吗?
由于
答案 0 :(得分:2)
您的代码中的一个奇怪的事情是findViewById()
无法访问ArrayAdapter
...我不明白您的代码如何编译...
顺便说一下,您应该使用getView(...)
参数中传递的视图来检索进度条。
ProgessBar progressBar = (ProgressBar) convertView.findViewById( R.id.downloadprogressbar );