обновить удалить элементы списка - PullRequest
0 голосов
/ 21 марта 2012

У меня есть список, который при нажатии открывается, но не отображает подробную информацию об этом элементе списка.Данные для просмотра списка вводятся классом в набор данных sqlite и извлекаются из базы данных sqlite другим классом.Не знаю, где я ошибся с классом, который должен отбрасывать данные при нажатии на элемент списка.У меня недостаточно pont для публикации изображений соответствующих xml-файлов, но методы onClick ниже

Listview:

@ Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Toast.makeText(getApplicationContext(), "clicked on :" + arg2, Toast.LENGTH_SHORT).show();

    Intent updateDeleteLoginInfo = new Intent (this, UpdateDeleteLoginList.class);

    LoginDetails clickedObject = loginArrayList.get(arg2);

        Bundle loginBundle = new Bundle();
    loginBundle.putString("clickedwebSite",clickedObject.getsName());
    loginBundle.putString("clickedwebAddress",clickedObject.getwUrl());
    loginBundle.putString("clickeduserName",clickedObject.getuName());
    loginBundle.putString("clickedpassWord",clickedObject.getpWord());

    updateDeleteLoginInfo.putExtras(loginBundle);

    startActivity(updateDeleteLoginInfo);

Класс обновления:

@ Переопределить

public void onClick(View v){

    loginSitetext = sName.getText().toString();
    loginAddresstext = wUrl.getText().toString();
    loginUsertext = uName.getText().toString();
    loginpassWordtext = pWord.getText().toString();

    LoginDetails loginDetails = new LoginDetails();

    loginDetails.setsName(bundledWebSite);
    loginDetails.setwUrl(bundledWebAddress);
    loginDetails.setuName(bundledUserName);
    loginDetails.setpWord(bundledPassWord);

    if(v.getId()==R.id.rucBttn){
        finish();

    }else if(v.getId()==R.id.ruuBttn){
        updateLoginDetails(loginDetails);

    }else if(v.getId()==R.id.rudBttn){
        deleteLoginDetails(loginDetails);
    }

}


private void updateLoginDetails(LoginDetails loginDetails){

    dataStore androidOpenDbHelper = new dataStore(this);

    SQLiteDatabase sqliteDatabase = androidOpenDbHelper.getWritableDatabase();

    ContentValues contentValues = new ContentValues();

    contentValues.put(dataStore.COLUMN_NAME_SITE, loginSitetext);
    contentValues.put(dataStore.COLUMN_NAME_ADDRESS, loginAddresstext);
    contentValues.put(dataStore.COLUMN_NAME_USERNAME, loginUsertext);
    contentValues.put(dataStore.COLUMN_NAME_PASSWORD, loginpassWordtext);

    String[] whereClauseArgument = new String[1];
    whereClauseArgument[0]= loginDetails.getsName();

    System.out.println("whereClauseArgument[0] is :" + whereClauseArgument[0]);

    sqliteDatabase.update(dataStore.TABLE_NAME_INFOTABLE, contentValues, dataStore.COLUMN_NAME_SITE+"=?", whereClauseArgument);

    sqliteDatabase.close();
    finish();
}

private void deleteLoginDetails(LoginDetails deleteLoginDetails){

    dataStore androidOpenDbHelper = new dataStore(this);

    SQLiteDatabase sqliteDatabase = androidOpenDbHelper.getWritableDatabase();

    String[] whereClauseArgument = new String[1];
    whereClauseArgument[0] = deleteLoginDetails.getsName();

    sqliteDatabase.delete(dataStore.TABLE_NAME_INFOTABLE,dataStore.COLUMN_NAME_SITE+"=?", whereClauseArgument);

    sqliteDatabase.close();
    finish();

Ответы [ 2 ]

0 голосов
/ 25 апреля 2012

Нашел 'C', в котором аргумент ClauseArgument в другом классе не был капитализирован.После использования заглавных букв все работает как надо.

0 голосов
/ 22 марта 2012

вы можете использовать функцию notifyDataSetChanged (), чтобы добиться обновления listView.

или

назначить новый адаптер каждый раз, когда вы обновляете список, который требует обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...