Android 自定义数组适配器 getView 未被调用

标签 android listview android-arrayadapter

这是我的适配器,即使数组列表有元素也不会调用 getView 方法

public class CarrierSammuryAdapter extends ArrayAdapter<CarrierSummary> {

private final Activity context;
private final ArrayList<CarrierSummary> ite;
private final int lay;


public CarrierSammuryAdapter(Activity context, ArrayList<CarrierSummary> menuLinkList,int layout) {
    super(context,layout );
    this.context = context;
    this.ite = menuLinkList;
    this.lay=layout;




}
// static to save the reference to the outer class and to avoid access to
        // any members of the containing class

    static class ViewHolder {
    public  TextView customer;
    public  TextView attempts;
    public    TextView successful;
    public    TextView  minutes;
    public    TextView ASR;
    public    TextView ACD;
    public    TextView NER;
    public    TextView PDD;

    }
    @Override
    public int getCount () {
        return ite.size();
    }

    @Override
    public long getItemId (int position) {
        return position;
    }

    @Override
    public CarrierSummary getItem (int position) {
        return ite.get(position);
    }

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // ViewHolder will buffer the assess to the individual fields of the row layout

            final ViewHolder holder;

            // Recycle existing view if passed as parameter
                    // This will save memory and time on Android
                    // This only works if the base layout for all classes are the same
                    View rowView = convertView;
                    if (rowView == null) {
            LayoutInflater inflater =  context.getLayoutInflater();//this gives error !!
            rowView=inflater.inflate(R.layout.carriersumamry_item,parent,false);

             holder = new ViewHolder();

             holder.customer=(TextView)rowView.findViewById(R.id.customer);
              holder.attempts=(TextView)rowView.findViewById(R.id.attempts);
              holder.successful=(TextView)rowView.findViewById(R.id.successful);
              holder.minutes=(TextView)rowView.findViewById(R.id.minutes);
              holder.ASR=(TextView)rowView.findViewById(R.id.asr);
              holder.ACD=(TextView)rowView.findViewById(R.id.acd);
              holder.NER=(TextView)rowView.findViewById(R.id.ner);
              holder.PDD=(TextView)rowView.findViewById(R.id.pdd);
            // ViewResizing.setListRowTextResizing(rowView, context);

             rowView.setTag(holder);
                    } else {
                        holder = (ViewHolder) rowView.getTag();
                    }

                      holder.customer.setText(ite.get(position).getCustomer());
                       holder.attempts.setText(ite.get(position).getAttempts());
                       holder.successful.setText(ite.get(position).getSuccessful());
                       holder.minutes.setText(ite.get(position).getMinutes());
                       holder.ASR.setText(ite.get(position).getASR());
                       holder.ACD.setText(ite.get(position).getACD());
                       holder.NER.setText(ite.get(position).getNER());
                       holder.PDD.setText(ite.get(position).getPDD());
            return rowView;


}

这是我的名字

         carrierSummaryList =(ListView)findViewById(R.id.carrierSummary_listview);
        CarrierSammuryAdapter adapter = new CarrierSammuryAdapter(CarrierSummaryActivity.this,  carriersam,R.layout.carriersumamry_item);
        carrierSummaryList.setAdapter(adapter);

我搜索了很多来解决这个问题,但没有解决方案,从未调用 getView 方法。

这是我的 XML

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
   android:layout_height="wrap_content"
  android:orientation="horizontal"
  >

 <TextView 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pdd"
android:textColor="@color/grey"
/>
 <TextView 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ner"
android:textColor="@color/grey"
/>
  <TextView 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/acd"
   android:textColor="@color/grey"
   />
   <TextView 
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/asr"
  android:textColor="@color/grey"
   />
<TextView 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/minutes"
  android:textColor="@color/grey"
   />
 <TextView 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
   android:id="@+id/successful"
   android:textColor="@color/grey"
   />
   <TextView 
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
    android:id="@+id/attempts"
     android:textColor="@color/grey"
    />
    <TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
     android:id="@+id/customer"
    android:textColor="@color/grey"
     />
  </LinearLayout>

最佳答案

我有这个完全相同的问题,为了解决它,我只是将 ArrayAdapter 更改为 BaseAdapter,实现了重写的方法并且它起作用了。

正如 khuskal 所说,您应该始终使用 Context 而不是 Activity

关于Android 自定义数组适配器 getView 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564576/

相关文章:

java - Android:快速滚动 ListView getPositionForSection 的奇怪行为

javascript - 为什么我的 CSS 和 PHP 包含没有加载到我的 WebView 中

java - 读取 android 程序的 excel 表

java - AutoCompleteTextView 不响应对其 ArrayAdapter 的更改

java - Android viewBinder 在 simpleCursorAdapter 上显示图像

php - 带有 <ul> 标签的 Yii CListView

java - 从android中的 ListView 获取选定的复选框文本的结构?

android - 使用 arrayadapter Android 动态添加项目到 ListView

android - 您如何获得联系人组的成员?

java - ArrayAdapter 构建 ArrayList 时未正确处理单击事件