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);
}
你需要改变
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"