В настоящее время я занимаюсь разработкой приложения, в котором главный экран не имеет фактического представления, как в setContentView (R.layout.myScreen); используется. Вместо этого он использует файл XML, который просто детализирует текстовое представление, которое назначается адаптеру списка и заполняется данными из базы данных.
Ниже приведен XML-файл, который используется
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/com.BoardiesITSolutions.PasswordManager"
android:id="@+id/showLogin"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16dp">
</TextView>
Ниже приведен код, в котором данные добавляются в адаптер списка текстовых представлений
открытый класс ShowLogins расширяет ListActivity {
String LOGINS[] = null;
String company = null;
String longClickCompany;
String companyName = "";
String companyURL = "";
String companyUsername = "";
String companyPassword = "";
Boolean passwordEnabled;
public void onCreate(Bundle savedInstanceState)
{
SharedPreferences settings = getSharedPreferences("prefs", 0);
boolean enablePassword = settings.getBoolean("enablePassword", false);
boolean loggedIn = settings.getBoolean("loggedIn", false);
super.onCreate(savedInstanceState);
if (loggedIn)
{
passwordEnabled = settings.getBoolean("enablePassword", false);
setContentView(R.layout.show_login);
//registerForContextMenu(getListView());
addToArray();
setListAdapter(new ArrayAdapter<String>(this, R.id.showLoginBox, LOGINS));
//ListView lv = getListView();
ListView lv = (ListView)findViewById(R.id.show_list_view);
//View myView = findViewById(R.layout.advert);
//lv.addView(myView);
lv.setTextFilterEnabled(true);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
longClickCompany = ((TextView) view).getText().toString();
return false;
}
});
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
company = ((TextView) view).getText().toString();
StringTokenizer st = new StringTokenizer(company, "\n");
String companyName = st.nextToken();
String username = st.nextToken();
prepareLoadingWebsite(companyName, username);
}
});
}
else
{
Intent intent = new Intent(ShowLogins.this, SplashScreen.class);
startActivity(intent);
}
}
private void addToArray()
{
int totalRows = 0;
int added = 0;
int arrayField = 0;
SQLiteDatabase myDB = null;
Cursor c = null;
Cursor count = null;
try
{
myDB = this.openOrCreateDatabase("PasswordManager", MODE_PRIVATE, null);
count = myDB.rawQuery("SELECT COUNT(*) FROM PASSWORD", null);
if (count.moveToNext())
{
totalRows = count.getInt(0);
}
LOGINS = new String[totalRows];
c = myDB.rawQuery("SELECT * FROM password ORDER BY pas_company ASC", null);
while(arrayField <=2 && c.moveToPosition(added))
{
LOGINS[added] = c.getString(1) + "\n" + c.getString(3);
added++;
}
if (totalRows == 0)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("No login records have been found.\n\n Press menu > New login to add a record")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
else
{
setListAdapter(new ArrayAdapter<String>(this, R.layout.show_login, LOGINS));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
}
}
catch (SQLiteException ex)
{
Log.d("Database Error", ex.toString());
}
finally
{
myDB.close();
c.close();
count.close();
}
}