0
我爲列表中的不同子適配器創建了一個基類,它具有一個List字段與泛型類型。類的代碼是如下:如何正確調用具有通用類型參數的方法,並取消「未經檢查的對原始類型成員的調用」警告
public class ListBaseAdapter<T> extends BaseAdapter {
private List<T> items;
@Override
public int getCount() {
if (items==null)
return 0;
return items.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return null;
}
List getDataset() {
return items;
}
public void setDataset(List<T> items) {
this.items = items;
}
}
另外,下面是其不同的子類的一些例子:
public class UserListAdapter extends ListBaseAdapter {...}
public class AddressListAdapter extends ListBaseAdapter {...}
在ListFragment,一個ListBaseAdapter字段根據不同類型中聲明和初始化顯示列表。
public class TheListFragment extends ListFragment {
private ListBaseAdapter adapter;
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
...
switch(type) {
case 1:
adapter = new UserListAdapter();
adapter.setDataset(users); // this line of code is getting the warning of "unchecked call to member of raw type"
break;
case 2:
adapter = new AddressListAdapter();
adapter.setDataset(addresses); // this line of code is getting the warning of "unchecked call to member of raw type"
break;
}
setListAdapter(adapter);
}
}
的代碼只是正常工作,我也知道,通過設置類型的ListBaseAdapter如下面的例子將擺脫的警告:
private ListBaseAdapter<Users> adapter;
,但如果我做所以,我將不得不在ListFragment中準備多個具有特定類型的適配器。
我想知道是否有辦法擺脫警告(不使用林特),但仍然只維護一個適配器字段或我正確地做這種編碼方式?
太棒了,+1 ..!作爲* Android *標籤的頂級用戶,您可以回答這個簡短的問題嗎?我應該每個**類**或**文件**或**項目**都有一個'public static void main(){}'方法嗎? – stack