Я использую этот следующий код, который создает ListView с текстом и значком, но у меня возникла проблема, которая заключается в следующем: я хочу, чтобы массив был динамическим, а не статическим, чтобы мой список создавался динамически, а не статистически.Моя конечная цель - извлечь определенные строки из моей базы данных и затем отобразить их в Listview, где каждая строка будет в каждой строке.Заранее большое спасибо.
Мой исходный код:
import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class History extends ListActivity implements OnItemClickListener {
String keyWord = "";
String histDesRes = "";
String history = "";
String rawImage;
ArrayList<String> Ra = new ArrayList<String>();
SQLiteDatabase mydb;
TextView selection;
public String[] result={keyWord, "ipsum", "dolor",
"sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel",
"ligula", "vitae", "arcu", "aliquet", "mollis",
"etiam", "vel", "erat", "placerat", "ante",
"porttitor", "sodales", "pellentesque", "augue", "purus"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.history);
populate();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//populate();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
//populate();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//populate();
}
void populate() {
mydb = openOrCreateDatabase("vivo_id.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
Cursor c = mydb.query("VIVOID", null, null, null, null, null, null);
// start the managing cursor
startManagingCursor(c);
// move to first row
c.moveToFirst();
// continue searching until it is the last row in the column
while (c.isAfterLast() == false) {
rawImage = c.getString(c.getColumnIndex("couponThumbnailResult"));
keyWord = c.getString(c.getColumnIndex("keyWordResult"));
histDesRes = c.getString(c.getColumnIndex("historyDescriptionResult"));
//Toast.makeText(getApplicationContext(),
//history, Toast.LENGTH_LONG).show();
history = keyWord+" "+ histDesRes;
c.moveToNext();
}
// close everything
c.close();
mydb.close();
setListAdapter(new IconicAdapter());
selection=(TextView)findViewById(R.id.selection);
}
public void onListItemClick(ListView parent, View v, int position, long id) {
Toast.makeText(getApplicationContext(),
"Inside listen", Toast.LENGTH_LONG).show();
}
class IconicAdapter extends ArrayAdapter {
IconicAdapter() {
super(History.this, R.layout.row, result);
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.row, parent, false);
TextView label = (TextView) row.findViewById(R.id.label);
label.setText(result[position]);
ImageView icon = (ImageView) row.findViewById(R.id.icon);
icon.setImageResource(R.drawable.ok);
return (row);
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
}
/**
* On Item click event for the list view
*/