2012-03-21 7 views
0

У меня есть список, который при нажатии открывается, но не отображает подробную информацию об этом элементе списка. Данные для listview вводятся классом в базу данных sqlite и извлекаются из базы данных sqlite другим классом. Не уверен, где я поступил не так с классом, он должен вытолкнуть данные при щелчке по списку. У меня нет достаточно Понта, чтобы получить возможность отправлять распечатанными из соответствующих XML-файлов, но методы OnClick нижеupdate delete listview items

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); 

Update Класса:

@Override

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(); 

ответ

0

Найден «C» в whereClauseArgument в другом классе не был каптализован. После его капитализации все работало так, как должно.

0

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

или

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

+0

Мне жаль, проблема в том, что после нажатия элемента списка ListView активность, используемая для обновления/удаления, не заполняется подробной информацией о элементе списка ListView. – user1165694