1

我在单击时填充自定义布局列表视图时遇到问题。我没有使用 java 和 ArrayLists 的经验。我的代码主要是使用网络上的教程构建的。我通过例子学得更快。所以,我有一个自定义项目的类和一个适配器。他们是这样的:

public class Prodf {
        public int icon;
        public String id;
        public String nume;
        public String um;
        public String pu;
        public String cant;
        public Prodf(){
            super();
        }

        public Prodf(int icon, String id, String nume, String um, String pu, String cant) {
            super();
            this.icon = icon;
            this.id = id;
            this.nume = nume;
            this.um = um;
            this.pu = pu;
            this.cant = cant;
        }
    }

和适配器:

public class ProdfAdapter extends ArrayAdapter<Prodf> {

        Context context;
        int layoutResourceId;   
        Prodf data[] = null;
        Context mContext;

        public ProdfAdapter(Context context, int layoutResourceId, Prodf[] data) {
            super(context, layoutResourceId, data);
            this.layoutResourceId = layoutResourceId;
            this.mContext = context;
            this.context = context;
            this.data = data;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            ProdfHolder holder = null;
            if(row == null)
            {
                LayoutInflater inflater = ((Activity)context).getLayoutInflater();
                row = inflater.inflate(layoutResourceId, parent, false);
                holder = new ProdfHolder();
                holder.hldIcon = (ImageView)row.findViewById(R.id.fffIcon);
                holder.hldId = (TextView)row.findViewById(R.id.fID);
                holder.hldNume = (TextView)row.findViewById(R.id.fTitlu);
                holder.hldUm = (TextView)row.findViewById(R.id.fUM);
                holder.hldPu = (TextView)row.findViewById(R.id.fPU);
                holder.hldCant = (TextView)row.findViewById(R.id.fCant);
                row.setTag(holder);
            }
            else
            {
                holder = (ProdfHolder)row.getTag();
            }
            Prodf produ = data[position];
            holder.hldId.setText(produ.id);
            holder.hldNume.setText(produ.nume);
            holder.hldUm.setText(produ.um);
            holder.hldPu.setText(produ.pu);
            holder.hldCant.setText(produ.cant);
            return row;
        }


        static class ProdfHolder
        {
            ImageView hldIcon;
            TextView hldId;
            TextView hldNume;
            TextView hldUm;
            TextView hldPu;
            TextView hldCant;
        }    
    }
  • 如何在按钮单击事件中使用这些,以便将完整项目添加到自定义布局列表视图?

我在其中设置单击按钮事件并为列表视图设置适配器的波纹管 id。但是我在适配器和添加功能中使用了不同的类型......我该如何修复它们?

...
ArrayList<Prodf> produsele = new ArrayList<Prodf>();
....
Button badd = (Button) findViewById(R.id.btn_addpro);
View.OnClickListener eventHandler2 = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Prodf produsu = new Prodf(0, "id1", "numepro", "PCS", "3.20", "2");        
produsele.add(produsu);                
ProdfAdapter adapter = new ProdfAdapter(MyActivity.this,R.layout.prodf_item, produsele);
mylist.setAdapter(adapter);                             
adapter.notifyDataSetChanged();

您会注意到,我的适配器扩展了 ArrayAdapter 并需要一个 Prodf[] ,当我填充项目时,我使用一个 ArrayList 。我认为这是我的问题,但我不知道如何让他们相处......因此,我得到编译器错误:

构造函数 ProdfAdapter(MyActivity, int, ArrayList) 未定义

我知道为什么,但我不知道如何解决它。

4

2 回答 2

0

我自己找到了答案。我必须更改适配器以接收与单击事件中添加的相同类型的信息。现在它起作用了。

于 2013-08-06T10:12:12.403 回答
0

你必须:

于 2013-08-06T09:39:36.280 回答