Android ArrayList,每行包含自定义数组

问题描述 投票:0回答:1
How can I write the array on the ItemsScreenActivity activity, so that when pressing on each element, its corresponding values are added to database?

现在的问题是,无论我按什么元素,只有可乐500 200被添加到数据库中(因为实际上,代码只做这个)。我希望在屏幕上显示一个项目列表,为此我创建了一个ArrayList。 arraylist中的每个项目对应一个包含三个元素的自定义行(我为其创建了一个特殊的布局和自定义适配器)。

public class ItemsScreenActivity extends AppCompatActivity {

    MyDBHandler myDb = new MyDBHandler(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.items_screen);

        ListView ListView = (ListView)findViewById(R.id.myList);
    
            final ArrayList<DataModel> items = new ArrayList<DataModel>();
    
            final DataModel coke = new DataModel("Coke", "500", "200");
            items.add(cafea);
            final DataModel pepsi = new DataModel("Pepsi", "500", "200");
            items.add(espresso);
    
            ListAdapter myAdapter = new CustomAdapter(this, R.layout.custom_row, items);
            ListView myList = (ListView) findViewById(R.id.myList);
            myList.setAdapter(myAdapter);
    		
            myList.setOnItemClickListener(
                    new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            String itemType = coke.getitemType().toString();
                            String quantity = coke.getCantBautura().toString();
                            String calories = coke.getCantcalories().toString();
                            AddData(itemType, quantity, calories);
                        }
                    }
            );}
public void AddData(String itemType, String quantity, String calories) {
            boolean insertData = myDb.addData(itemType, quantity, calories);
}
java android
1个回答
1
投票

你需要改变

    final ArrayList<DataModel> items = new ArrayList<DataModel>();
    final DataModel coke = new DataModel("Coke", "500", "200");
    items.add(cafea);
    final DataModel pepsi = new DataModel("Pepsi", "500", "200");
    items.add(espresso);

        final ArrayList<DataModel> items = new ArrayList<DataModel>();
        final DataModel coke = new DataModel("Coke", "500", "200");
        items.add(coke );
        final DataModel pepsi = new DataModel("Pepsi", "500", "200");
        items.add(pepsi );

目前,在你的onclick中,你总是将可乐数据添加到db中。获取单击的对象并添加它。

 DataModel dataModel = (DataModel) myListView.getItemAtPosition(position);
 //  dataModel.name // "Coke"
 // dataModel.value  // "500"
© www.soinside.com 2019 - 2024. All rights reserved.