将数组列表添加到自定义列表视图

问题描述:

我已经定制了ListView。我试图通过Arraylist来填充ListView。我可以成功发送数据作为字符串来填充ListView而不是ArrayList。只显示所有值为arraylist的单行。将数组列表添加到自定义列表视图

MainActivity

public class MainActivity extends Activity { 
ArrayList<Product> products = new ArrayList<Product>(); 
Adapter listviewAdapter; 
List arrlist = new ArrayList(); 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    arrlist.add("1"); 
    arrlist.add("2"); 

    fillData(); 
    listviewAdapter = new Adapter(this, products); 
    ListView lvMain = (ListView) findViewById(R.id.lvMain); 
    lvMain.setAdapter(listviewAdapter); 
    } 
    void fillData() { 
     products.add(new Product(arrlist.toString(),false)); //problem is here i suppose 

    } 
} 

Adapter.java

public class Adapter extends BaseAdapter { 
Context ctx; 
LayoutInflater lInflater; 
ArrayList<Product> objects; 
Adapter(Context context, ArrayList<Product> products) { 
    ctx = context; 
    objects = products; 
    lInflater = (LayoutInflater) ctx 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 
@Override 
public int getCount() { 
    return objects.size(); 
} 
@Override 
public Object getItem(int position) { 
    return objects.get(position); 
} 
@Override 
public long getItemId(int position) { 
    return position; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    if (view == null) { 
     view = lInflater.inflate(R.layout.item, parent, false); 
    } 
    Product p = getProduct(position); 

    ((TextView) view.findViewById(R.id.tvDescr)).setText(p.name); 
    CheckBox cbBuy = (CheckBox) view.findViewById(R.id.cbBox); 
    return view; 
} 
Product getProduct(int position) { 
    return ((Product) getItem(position)); 
} 
} 

Product.java

public class Product { 
String name; 
boolean selected; 

    Product(String items, boolean _box) { 
     name = items; 
     selected = _box; 
    } 
} 
+0

任何异常你得到? – vishalk

+1

那么问题是什么? –

+0

仅显示组合阵列列表的单行 – Ted

尝试每个ArrayList项目添加到Product对象通过迭代ArrayList

for(String row :arrlist) { 
    products.add(new Product(row, false)); 
} 

定义arrlist为StringArrayList,而不是一般类型List

ArrayList<String> arrlist = new ArrayList<String>(); 
+0

不会是类型不匹配?从对象到字符串? – Ted

+0

现在检查更新的ans。 –

+0

谢谢。有用。小监督 – Ted

你的功能建议立即进行删除d是

void fillData() { 
    products.add(new Product("1",false)); 
    products.add(new Product("2",false)); 
    products.add(new Product("3",false)); 
} 
+0

我知道发送字符串的作品。这工作。但我的问题是发送'arraylist'包含以前的数据 – Ted