2017-06-02 2 views
-1

私はgetViewのメドックについていくつかアドバイスをくれますか? getTaskText // methood:生タイプ
問題3のメンバーとしてArrayAdapterに未チェックの呼び出し(..):スーパー:
私はArrayAdapter(文脈、ID、リスト)私のカスタム配列アダプタのgetViewメソッドが動作していません

public class myCustomAdapter extends ArrayAdapter{ 


private List obj = null; 
public myCustomAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List objects) { 
    super(context, resource, objects); 
    obj = objects; 

} 

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

@Nullable 
@Override 
public Object getItem(int position) { 
    return super.getItem(position); 
} 



@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    Task myTask = (Task) getItem(position); 
    if(convertView==null){ 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent); 
    } 
    TextView myTextView = (TextView) convertView.findViewById(R.id.textView); 
    myTextView.setText(myTask.getTaskText()); 
    CheckBox myCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox); 
    myCheckBox.setChecked(myTask.getChecked()); 

    return convertView; 
} 

} 

問題1を拡張するカスタムアダプタを持っています私のタスククラスから// NPEを生成する可能性があります。

可能であれば、助けてください。

答えて

1
if(convertView!=null){ 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent); 
} 

if(convertView==null){ 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent); 
    } 

Yでなければなりませんconvertviewがnullの場合は、拡張する必要があります。それがnullでないときではない。そして、あなたのgetView()メソッドから返す

また、私はgetCount()メソッドを見ることができません。また、アダプタに膨らませるアイテムの数を伝えることも非常に重要です

+0

オールライト。あなたの親切な先生に感謝! –

1

変更この

return super.getView(position, convertView, parent)

return convertView;

1

nullのときにconvertviewを展開する必要があります。

if(convertView == null){ convertView = LayoutInflater.from(getContext())。inflate(R.layout.list_item、parent); }

また、私はBaseAdapterを使用することをお勧めconvertview代わりのスーパー

0

を返し、それが基本だ、ArrayAdapterは、ほとんどの場合、あなたはそれを直接使用し、BaseAdapterを継承する必要はありません、BaseAdapter」サブクラスです。私の第二の問題を解決し

ArrayAdapter adapter = new ArrayAdapter(context, R.layout.list_item, R.id.text, stringList); 

public class MyCustomAdapter extends BaseAdapter { 

    private List<Task> listData; 

    public MyCustomAdapter(List<Task> list) { 
     listData = list; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return listData.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 
     } 
     Task data = getItem(position); 
     TextView text = (TextView) convertView.findViewById(R.id.text); 
     return convertView; 
    } 
} 
関連する問題