1

これが私のカスタム BaseAdapter のコンストラクタです

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

mObjects という名前のオブジェクトの配列リストがあります。アクティビティからこのメソッドにアクセスするにはどうすればよいですか?

baseAdapter を初期化する方法

これは私が試したものです

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

これが機能する理由はありませんが、この baseadapter を書き直し始めたところです。最後の部分を書き直して、オブジェクトの配列を取得するにはどうすればよいでしょうか?

「IllegalStateException: ArrayAdapter requires the resource to be a textview」が表示され続けますが、いくつかのパラメーターを持つオブジェクトを使用しています。なぜテキストビューを表示するのでしょうか?

4

2 に答える 2

2

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

public class ExampleAdapter extends 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;
    }

}
于 2013-01-05T04:59:38.077 に答える
1

アダプターが のサブクラスではない理由はありますBaseAdapterか? 通常、次のようなことをしたい: https://stackoverflow.com/a/2265712/832776

警告の理由は、デフォルトのArrayAdapterコンストラクターが、レイアウトに含まれる が 1 つだけであることを想定しているためですTextView。だから私は有効であることを確認しmy_object_cell.xmlます。TextView複数の や異なるウィジェットを使用する予定がある場合は、 を使用して、オブジェクトのプロパティをコンストラクターsetViewBinder()と共に各ビューに割り当てることができます。ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

于 2013-01-05T02:43:46.893 に答える