Android实现水果列表,Android ListView與SQLite綜合使用(水果商品展示案例)
时间: 2023-06-16 14:07:54 浏览: 117
以下是一个简单的Android应用程序,它使用ListView和SQLite数据库来显示水果列表:
1. 建立一个新的Android项目,命名为“FruitList”。
2. 在布局文件中添加ListView组件:
```
<ListView
android:id="@+id/listViewFruits"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
```
3. 创建一个新的Java类名为“Fruit”,用于表示水果对象。它应该包含以下属性:
```
private int id;
private String name;
private String description;
private double price;
```
并提供相应的getter和setter方法。
4. 创建一个新的Java类名为“FruitDatabaseHelper”,用于创建和管理SQLite数据库。它应该继承自SQLiteOpenHelper,并实现onCreate和onUpgrade方法。在onCreate方法中创建名为“fruits”的表,其中包含id、name、description和price列。
5. 创建一个新的Java类名为“FruitListAdapter”,用于将Fruit对象显示在ListView中。它应该继承自BaseAdapter,并实现getView、getItemId、getItem和getCount方法。
在getView方法中,使用LayoutInflater从布局文件中创建一个新的视图,并将Fruit对象的属性设置为相应的TextView组件。
6. 在MainActivity类中,创建一个FruitDatabaseHelper对象,并调用getReadableDatabase方法以获取一个可读的SQLite数据库对象。
使用Cursor对象从数据库中检索所有水果,并将它们存储在一个ArrayList<Fruit>中。
7. 创建一个FruitListAdapter对象并将其设置为ListView的适配器。
8. 运行应用程序,你应该看到一个包含所有水果的列表。
这里是完整的MainActivity代码:
```
public class MainActivity extends AppCompatActivity {
private ListView listViewFruits;
private FruitDatabaseHelper databaseHelper;
private ArrayList<Fruit> fruits;
private FruitListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listViewFruits = (ListView) findViewById(R.id.listViewFruits);
databaseHelper = new FruitDatabaseHelper(this);
fruits = new ArrayList<Fruit>();
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.query("fruits", null, null, null, null, null, null);
while (cursor.moveToNext()) {
Fruit fruit = new Fruit();
fruit.setId(cursor.getInt(cursor.getColumnIndex("id")));
fruit.setName(cursor.getString(cursor.getColumnIndex("name")));
fruit.setDescription(cursor.getString(cursor.getColumnIndex("description")));
fruit.setPrice(cursor.getDouble(cursor.getColumnIndex("price")));
fruits.add(fruit);
}
cursor.close();
db.close();
adapter = new FruitListAdapter(this, fruits);
listViewFruits.setAdapter(adapter);
}
}
```
这里是完整的FruitListAdapter代码:
```
public class FruitListAdapter extends BaseAdapter {
private Context context;
private ArrayList<Fruit> fruits;
public FruitListAdapter(Context context, ArrayList<Fruit> fruits) {
this.context = context;
this.fruits = fruits;
}
@Override
public int getCount() {
return fruits.size();
}
@Override
public Object getItem(int position) {
return fruits.get(position);
}
@Override
public long getItemId(int position) {
return fruits.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_fruit, parent, false);
}
TextView textViewName = (TextView) convertView.findViewById(R.id.textViewName);
TextView textViewDescription = (TextView) convertView.findViewById(R.id.textViewDescription);
TextView textViewPrice = (TextView) convertView.findViewById(R.id.textViewPrice);
textViewName.setText(fruits.get(position).getName());
textViewDescription.setText(fruits.get(position).getDescription());
textViewPrice.setText("$" + String.format("%.2f", fruits.get(position).getPrice()));
return convertView;
}
}
```