1

這是我爲我定製的BaseAdapter如何初始化我BaseAdapter

public MyAdapterAds(Activity activity, BaseAdapter delegate) { 
    this.activity = activity; 
    this.delegate = delegate; 
} 

我有一個名爲mObjects對象的ArrayList構造函數。我如何從我的活動中將他們引入此方法?

如何初始化我baseAdapter

這就是我試圖

myAdapter = new myAdapterAds(MainActivity.this, new ArrayAdapter<myObject>(context, R.layout.my_object_cell, myObjectArray)); 

沒有原因的工作,但我剛剛開始改寫這個baseadapter,我怎麼會重寫最後部分讓我的數組中的對象?

我不斷收到「IllegalStateException:ArrayAdapter需要資源成爲一個文本視圖」,但我使用的對象有幾個參數,爲什麼我會顯示一個文本視圖?

回答

1

是否有你的適配器不是BaseAdapter的子類的原因?通常情況下,您想要這樣做:https://stackoverflow.com/a/2265712/832776

警告的原因是默認的ArrayAdapter構造函數期望佈局僅包含一個TextView;所以我會檢查my_object_cell.xml是否有效。如果您打算使用多個TextView或不同的小部件,則可以使用setViewBinder()將您的對象的屬性以及ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)構造函數分配給每個視圖。

2

  ExampleAdapter adapter = new ExampleAdapter(); 
     adapter.notifyDataSetChanged(); 
     ls.setAdapter(adapter); 

公共類ExampleAdapter延伸BaseAdapter { ViewHolder保持器;

public View getView(final int position, View convertView, 
      ViewGroup parent) { 
     if (convertView == null) { 

      LayoutInflater inflater = getLayoutInflater(); 
      convertView = inflater.inflate(R.layout.listitem, null); 

      holder = new ViewHolder(); 
      holder.name = (TextView) convertView 
        .findViewById(R.id.textView1); 


      convertView.setTag(holder); 
     } else { 

      holder = (ViewHolder) convertView.getTag(); 

     } 


     holder.name.setText("name"); 


     return convertView; 
    } 

    private class ViewHolder { 

     private TextView name; 

    } 

    @Override 
    public boolean isEmpty() { 
     return false; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

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

}