Я пытался получить описание пароля для отображения в TextView в моем ListView - не повезло. Может ли кто-нибудь помочь мне с тем, что мне нужно сделать?Несколько элементов в ArrayAdapter ListView
На данный момент, как вы думаете, мне нужно использовать ArrayList вместо ArrayAdapter?
private static TextView mPasswordView;
private String mPassword;
private TextView mPasswordDesc;
private Button mGeneratepas;
private ListView mPasswordListView;
private ArrayAdapter<String> mAdapter;
private PasswordDBHelper mHelper;
private PasswordGenerator mPasswordGenerator = new PasswordGenerator();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHelper = new PasswordDBHelper(this);
mPasswordView = (TextView) findViewById(R.id.textPassword);
mGeneratepas = (Button) findViewById(R.id.buttonGenpas);
mPasswordListView = (ListView) findViewById(R.id.list_password);
updateList();
mGeneratepas.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mPassword = mPasswordGenerator.generateSessionKey(8);
mPasswordView.setText(mPassword);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_task:
final EditText passdescEditText = new EditText(this);
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Add Password to List")
.setMessage("Saving Password: " + mPassword)
.setView(passdescEditText)
.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String password = String.valueOf(mPassword);
String passdesc = String.valueOf(passdescEditText.getText());
SQLiteDatabase db = mHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put (PasswordContract.PasswordEntry.COL_PASSWORD, password);
values.put (PasswordContract.PasswordEntry.COL_PASS_DESC, passdesc);
db.insertWithOnConflict(PasswordContract.PasswordEntry.TABLE, null, values, SQLiteDatabase.CONFLICT_REPLACE);
db.close();
updateList();
}
})
.setNegativeButton("Cancel", null)
.create();
dialog.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void updateList(){
ArrayList<String> tasklist = new ArrayList<>();
SQLiteDatabase db = mHelper.getReadableDatabase();
Cursor cursor = db.query(PasswordContract.PasswordEntry.TABLE, new String[]{PasswordContract.PasswordEntry._ID, PasswordContract.PasswordEntry.COL_PASSWORD, PasswordContract.PasswordEntry.COL_PASS_DESC},
null, null, null, null, null);
while (cursor.moveToNext()){
int idx = cursor.getColumnIndex(PasswordContract.PasswordEntry.COL_PASSWORD);
tasklist.add(cursor.getString(idx));
}
if (mAdapter == null){
mAdapter = new ArrayAdapter<>(this,
R.layout.item_password,
R.id.password,
tasklist);
mPasswordListView.setAdapter(mAdapter);
}else{
mAdapter.clear();
mAdapter.addAll(tasklist);
mAdapter.notifyDataSetChanged();
}
cursor.close();
db.close();
здесь образец изображения:
Я работаю над этим Оливье. Позвольте мне посмотреть, работает ли это. Спасибо. –