2011-11-18 4 views
0

고유 키와 부울 값을 사용하여 해시 맵을 만들었습니다. 키에서 나는 callog.calls 행의 고유 ID를 얻고 있습니다. 내가 원하는 것은 해당 실제 가치가있는 키가 전화의 최근 통화 목록에서 삭제된다는 것입니다. calllog.calls에서 선택한 행을 쿼리하고 삭제할 수있는 방법을 알아야합니다. 나 자신에 의해 시도했지만 코드는 사용자가 원하는 값을 얻을) (코드 :android의 최근 통화 목록에서 특정 연락처를 삭제하는 방법은 무엇입니까?

me.getKey을 완료

public void onclickhandler(View nn){ 
    boolean state=false; 
    rl=(RelativeLayout) nn.getParent(); 
    TextView tv=(TextView)rl.getChildAt(1); 
    cb=(CheckBox)rl.getChildAt(2); 
    if(cb.isChecked()){ 
     state=true; 
    } 

    String s=tv.getText().toString(); 
    hmp.put(s, state); 

    Log.i("value", tv.getText().toString()); 
    System.out.println(state); 
} //........... 
     //I want to delete the contacts on button click.here 
     //is the code for the listener.. 

done.setOnClickListener(new OnClickListener(){ 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(CallLog.Calls.CONTENT_URI, 
           null, null, null, null); 
     Set keys = hmp.keySet(); 
     Iterator it=keys.iterator(); 

     while (it.hasNext()) { 
      String keyvalue=(String) it.next(); 

      if(hmp.get(keyvalue).booleanValue()==true){ 
       try{ 
        cur.moveToPosition(Integer.parseInt(keyvalue)); 
        String lookupKey = cur.getString(cur.getColumnIndex(
           CallLog.Calls.CACHED_NAME)); 

        Uri uri = Uri.withAppendedPath(
           CallLog.Calls.CONTENT_URI, lookupKey); 

        System.out.println("The uri is " + uri.toString()); 
        cr.delete(uri, null, null); 
       } 
       catch(Exception e) 
       { 
        System.out.println(e.getStackTrace()); 
       } 
      }//if  
     }//while 

    }//on click 
}); 
+0

이 값을 데이터베이스에 저장하고있는 중입니까? 왜 내가 쿼리 할 것인지 묻는 이유는 무엇입니까? –

+0

아니요 자체 데이터베이스를 만들지 않았습니다. android.provider.contacts db에서 삭제하고 싶습니다. –

+0

당신은 편집 된 version.it가 실제로 무엇을 하려는지 명확히 알 수 있습니다 –

답변

0
for(Map.Entry<String, String> me:nameofHashMap.entrySet()) 

for(Entry<String, String> me:nameofHashMap.keySet()) 

사용이 문을 작동하지 않습니다; 필요한 모든 가치를 얻을 것입니다. "me"는 생성하려는 객체의 이름이고, 원하는 이름을 지정하고 객체를 호출합니다.

+0

어떻게 이것을 사용하고 put.I 위치는 여전히 same.how입니다. 데이터베이스에서 단일 행을 쿼리해야한다고 생각합니다. 나는 생각합니다. 문제는 여기에 cr.delete (uri, 어디, null) ... 내가 어디에 argument.let 어디 행 고유 ID를 즉, 몇 가지 number.how 내가 할 수있는 넣어 알아낼 수 없었습니다. 일부 번호에 대한 행을 완료하십시오. 귀하의 회신에 대한 감상 많은 .. –

+0

대답을 편집, 그것을 확인하십시오. –

+0

내가 원하는 값을 얻고있다. 그 질문에 해당하는 전체 행을 삭제하는 방법입니다. 또는 어디에 cr.delete (uri, where, null) 필드에 넣을 ... 나는 아무런 단서가 없다. 일하고있다. –

관련 문제