リストフィールドを持つmyリスト用の異なるアダプタのサブクラスの基本クラスを作成しましたジェネリック型。クラスのコードは以下の通りである:ジェネリック型のパラメータを持つメソッドを正しく呼び出し、「未処理の型のメンバへの未確認の呼び出し」を回避する方法警告
以下また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;
}
}
は、それとは異なるサブクラスのいくつかの例である:ListFragmentで
public class UserListAdapter extends ListBaseAdapter {...}
public class AddressListAdapter extends ListBaseAdapter {...}
、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内で、それぞれが特定の型の複数のアダプタを用意しなければならないでしょう。
警告(Lintを使用しない)を取り除く方法があるのですが、まだ1つのアダプタフィールドしか保持していないのでしょうか、それとも正しくこの方法でコードを書いていますか?
グレート、+1 ..! * Androidタグのトップユーザーとしても、この短い質問にお答えできますか? **クラス**または**ファイル**または**プロジェクト**のそれぞれについて、1つの 'public static void main(){}'メソッドを持つべきですか? – stack