Я провел дни, проходя через форумы, и не нашел решения.Android Studio SQLite Query to listview
Я пытаюсь получить все записи из базы данных и показать их в ListView
public class list_loans extends Activity {
ListView loanList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_loans);
//Instantiate Database helper
DataBaseHelper myDbHelper = new DataBaseHelper(this);
ArrayList<personObject> myArray = new ArrayList<>();
//Open writable database
SQLiteDatabase db = myDbHelper.getWritableDatabase();
Cursor resultSet = db.rawQuery("SELECT * FROM borrower", null);
//TODO: Print out single list of item, not list for each item!**
if (resultSet != null) {
personObject myPerson = null;
if (resultSet.moveToFirst()) {
do {
String nameOut = resultSet.getString(1);
String phoneOut = resultSet.getString(2);
String addressOut = resultSet.getString(3);
Integer itemID = resultSet.getInt(4);
String itemType = resultSet.getString(5);
String itemDesc = resultSet.getString(6);
myPerson = new personObject(nameOut, phoneOut, addressOut, itemID, itemType,
itemDesc);
}while (resultSet.moveToNext());
}
myArray.add(myPerson);
loanList = (ListView) findViewById(R.id.loanList);
//TODO: loop through array and add each item to list, instead of entire array to list**
loanList.setAdapter(new listAdapter(this, myArray));
resultSet.close();
db.close();
}
}
Мой адаптер:
package com.creativenative.jonathan.loanme;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by Jonathan on 7/17/2015.
*/
class listAdapter extends BaseAdapter {
Context context;
ArrayList data;
private static LayoutInflater inflater = null;
public listAdapter(Context context, ArrayList data) {
this.context = context;
this.data = data;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (vi == null)
vi = inflater.inflate(R.layout.row, null);
TextView text = (TextView) vi.findViewById(R.id.text);
text.setText(data.toString());
return vi;
}
}
Ожидаемый результат:
Header Item 1
Item 1 details
Header Item 2
Item 2 details
Actual выход:
Header item 1
Item 1 details
Header item 2
Item 2 details
Header item 1
Item 1 details
Header item 2
Item 2 details
Каждый раз, когда я добавить элемент в базу данных, это добавляет еще один элемент списка, который содержит все, что в базе данных: Я не могу
Header item 1
Item 1 details
Header item 2
Item 2 details
Header item 3
Item 3 details
Header item 1
Item 1 details
Header item 2
Item 2 details
Header item 3
Item 3 details
Header item 1
Item 1 details
Header item 2
Item 2 details
Header item 3
Item 3 details
выяснить:
Добавить другой выход элемента как получить каждый элемент в отдельном месте в списке. Любая помощь очень ценится, как обычно ... Кроме того, я знаю, что эта проблема была рассмотрена раньше, но даже прохождение других сообщений не помогло.
Было бы очень полезно знать, почему этот пост продолжает получать вниз голосов. Я показываю исследовательские усилия, и это полезно. –