Android实现水果列表,Android ListView與SQLite綜合使用(水果商品展示案例)
时间: 2024-03-14 14:18:31 浏览: 19
要实现一个水果列表,我们需要使用Android中的ListView控件和SQLite数据库。下面是一个简单的实现步骤:
1. 创建一个新的Android项目,并在布局文件中添加ListView控件。
2. 创建一个Fruit类,用于存储水果的名称、价格和图片等信息。可以使用以下代码:
```
public class Fruit {
private String name;
private double price;
private int imageId;
public Fruit(String name, double price, int imageId) {
this.name = name;
this.price = price;
this.imageId = imageId;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int getImageId() {
return imageId;
}
}
```
3. 创建一个SQLite数据库,并在其中创建一个Fruit表,用于存储水果信息。可以使用以下代码:
```
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String CREATE_FRUIT = "create table Fruit ("
+ "id integer primary key autoincrement, "
+ "name text, "
+ "price real, "
+ "imageId integer)";
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_FRUIT);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
```
4. 在MainActivity中,将水果数据添加到数据库中,并将其显示在ListView中。可以使用以下代码:
```
public class MainActivity extends AppCompatActivity {
private List<Fruit> fruitList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, "Fruit.db", null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "apple");
values.put("price", 5.99);
values.put("imageId", R.drawable.apple);
db.insert("Fruit", null, values);
values.clear();
values.put("name", "banana");
values.put("price", 3.99);
values.put("imageId", R.drawable.banana);
db.insert("Fruit", null, values);
Cursor cursor = db.query("Fruit", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
int imageId = cursor.getInt(cursor.getColumnIndex("imageId"));
Fruit fruit = new Fruit(name, price, imageId);
fruitList.add(fruit);
} while (cursor.moveToNext());
}
cursor.close();
FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
class FruitAdapter extends ArrayAdapter<Fruit> {
private int resourceId;
public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects) {
super(context, textViewResourceId, objects);
resourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Fruit fruit = getItem(position);
View view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
ImageView fruitImage = view.findViewById(R.id.fruit_image);
TextView fruitName = view.findViewById(R.id.fruit_name);
TextView fruitPrice = view.findViewById(R.id.fruit_price);
fruitImage.setImageResource(fruit.getImageId());
fruitName.setText(fruit.getName());
fruitPrice.setText(String.valueOf(fruit.getPrice()));
return view;
}
}
}
```
5. 在布局文件中,添加一个ListView控件和一个自定义的水果列表项布局。可以使用以下代码:
```
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout
android:id="@+id/fruit_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<ImageView
android:id="@+id/fruit_image"
android:layout_width="50dp"
android:layout_height="50dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/fruit_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"/>
<TextView
android:id="@+id/fruit_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>
```
完成上述步骤后,运行应用程序即可看到水果列表。每个列表项中都包含水果的名称、价格和图片等信息。