【发布时间】:2017-05-10 01:05:28
【问题描述】:
我是安卓新手。我有一个使用 listview 的应用程序,我想从数据库中获取数据并将其显示在 listview 中。 我有获取值并将其放入列表中,但从列表中获取时出错。
AllOrderDbManager.java
public static List<DetailItem> getDetails(String ordId) { //ordId is the row id
List<DetailItem> data = new ArrayList<>();
String query = AllOrderDbHelper._ID + "=?";
Cursor cursor = database.query(AllOrderDbHelper.TABLE_NAME2, null, query, new String[]{ordId}, null, null, null);
if (cursor != null)
if (cursor.moveToFirst()) {
do {
String food = cursor.getString(cursor.getColumnIndex(FOOD_NAME));
String quantity = cursor.getString(cursor.getColumnIndex(QUANTITY));
DetailItem detailItem = new DetailItem();
detailItem.setFood(food);
detailItem.setQuantity(quantity);
data.add(detailItem);
} while (cursor.moveToNext());
}
cursor.close();
return data;
}
这是我的 DbManager。在这里,我通过行 id 获取值并将其设置为列表
DetailItem.java
public class DetailItem {
String food = "";
String quantity = "";
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
@Override
public String toString() {
return food;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
private AllOrderDbManager allOrderDbManager;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
allOrderDbManager = new AllOrderDbManager(this);
allOrderDbManager.open();
listView = (ListView) findViewById(R.id.lvDetails);
Intent intent = getIntent();
String ordId = intent.getStringExtra("ordId");
List<DetailItem> values = AllOrderDbManager.getDetails(ordId);
for (DetailItem detailItem: values) {
String food_name = detailItem.getFood();
String quantity = detailItem.getQuantity();
}
String[] from = new String[] {food_name, quantity};
int[] to = new int[] {R.id.tvItemsName, R.id.tvQuantity};
SimpleAdapter adapter = new SimpleAdapter(this,values,
R.layout.all_order_details_list, from, to);
listView.setAdapter(adapter);
}
}
这里我无法从列表中获取值并将其设置为列表视图。
activity_main.xml
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/lvDetails"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
all_order_details_list
<TextView
android:id="@+id/tvItemsName"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:textStyle="bold"
android:textColor="@android:color/black"
android:textSize="15sp" />
<TextView
android:id="@+id/tvQuantity"
android:layout_width="0dip"
android:textStyle="bold"
android:gravity="center"
android:textSize="15sp"
android:textColor="@android:color/black"
android:layout_height="match_parent"
android:layout_weight="1"/>
请帮忙。
【问题讨论】:
-
错误是什么?
-
请在此处粘贴 logcat 错误。
标签: java android sqlite listview