Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android动态填充自定义listview_Android_Android Listview - Fatal编程技术网

Android动态填充自定义listview

Android动态填充自定义listview,android,android-listview,Android,Android Listview,单击时填充自定义布局列表视图时出现问题。我没有java和ArrayList方面的经验。我的代码主要是使用web上的教程构建的。我通过例子学的快多了。 因此,我有一个自定义项的类和一个适配器。它们是这样的: public class Prodf { public int icon; public String id; public String nume; public String um; public String

单击时填充自定义布局列表视图时出现问题。我没有java和ArrayList方面的经验。我的代码主要是使用web上的教程构建的。我通过例子学的快多了。 因此,我有一个自定义项的类和一个适配器。它们是这样的:

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;
        }    
    }
公共类ProdfAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
Prodf data[]=null;
语境;
公共ProdfAdapter(上下文上下文、内部布局资源ID、Prodf[]数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.mContext=上下文;
this.context=上下文;
这个数据=数据;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ProdfHolder holder=null;
if(行==null)
{
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新产品支架();
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=(ProdfHolder)row.getTag();
}
Prodf produ=数据[位置];
holder.hldId.setText(产品id);
holder.hldNume.setText(produ.nume);
holder.hldUm.setText(produ.um);
holder.hldPu.setText(produ.pu);
holder.hldCant.setText(生产超高);
返回行;
}
静态类ProdfHolder
{
ImageView-hldIcon;
文本视图;
文本视图hldNume;
文本视图hldUm;
文本视图hldPu;
文本视图hldCant;
}    
}
  • 如何在按钮单击事件中使用这些选项,以便将完整项添加到自定义布局listview
下面是我设置click button事件并为listview设置适配器的id。但是,我在适配器和add函数中使用不同的类型。。。我怎样修理它们

...
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();
。。。
ArrayList produsele=新的ArrayList();
....
按钮添加=(按钮)findViewById(R.id.btn\u addpro);
View.OnClickListener eventHandler2=新建视图。OnClickListener(){
@凌驾
公共void onClick(视图arg0){
Prodf produsu=新产品(0,“id1”、“numepro”、“PCS”、“3.20”、“2”);
添加(produsu);
ProdfAdapter adapter=新的ProdfAdapter(MyActivity.this,R.layout.prodf_项,produsele);
mylist.setAdapter(适配器);
adapter.notifyDataSetChanged();
您会注意到,我的适配器扩展了ArrayAdapter并需要一个Prodf[],当我填充项目时,我使用ArrayList。我认为这是我的问题,但我不知道如何使它们相处融洽……因此,我得到了编译器错误:

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

我知道原因,但我不知道如何修复它。

您必须:

  • 创建适配器的实例,然后
  • 将的实例绑定到按钮
  • 在侦听器的方法中,使用

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

您必须将此适配器设置为您的列表视图。如果这样做,让我向您显示它(我将编辑问题以显示它)。我在填充Arraylist和使用适配器时遇到问题。请检查我编辑的问题。我会执行所有这些操作,但不会将项正确添加到适配器。。。