【问题标题】:how to initialize my BaseAdapter如何初始化我的 BaseAdapter
【发布时间】:2013-01-05 02:28:24
【问题描述】:

这是我的自定义 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”,但我正在使用一个带有多个参数的对象,为什么要显示一个 textview?

【问题讨论】:

    标签: android android-activity arraylist initialization baseadapter


    【解决方案1】:

               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;
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      您的适配器不是BaseAdapter 的子类有什么原因吗?通常你想做这样的事情:https://stackoverflow.com/a/2265712/832776

      警告的原因是默认的ArrayAdapter构造函数期望布局只包含一个TextView;所以我会检查my_object_cell.xml 是否有效。如果您计划拥有多个 TextViews 或不同的小部件,那么您可以使用 setViewBinder() 将属性从您的对象分配给每个视图,以及 ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 构造函数。

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 2019-04-10
        • 1970-01-01
        • 2013-06-01
        • 2021-07-14
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 2023-01-16
        相关资源
        最近更新 更多