2012-08-08 6 views
0

기본적으로 데이터베이스의 레코드를 가지고 있으며 각 레코드는 고유 한 ID (기본 키)와 해당 날짜 (mm : hh mm/dd/yy)를 가지고 있습니다. 이러한 레코드를 내 app의 listview에 표시하고 싶습니다. 하지만 시간이 (mm : hh) 일종의 못생긴 그래서 난 단지 목록에 mm/dd/yy를 표시하기로 결정했습니다, 지금 질문은, 내가 onitemClick을 프로그램 할 때, 어떤 항목이 클릭되고 있는지 어떻게 알 수 있습니까? ?? 나는 고유 ID와 정확한 날짜를 목록에 더 이상 표시하지 않기 때문에.항목의 이름이 같은 경우 클릭하는 목록의 항목을 찾는 방법은 무엇입니까?

ArrayList<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>(); 
     HashMap<String, String> map; 

     for (int x = Records.size()-1; x >=0; x--) 
     { 
      map = new HashMap<String, String>(); 
      map.put("ID", String.valueOf(Records.get(x).getId())); 
      map.put("date", Records.get(x).getDate()); //I am going to change this date to just mm/dd/yy 


      aList.add(map); 
     } 

     sd = new SimpleAdapter(this, aList, R.layout.historyactivityrow, 
       new String[] 
       { "date" }, new int[]    
       { R.id.date }); 

     lv.setAdapter(sd); 

     lv.setOnItemClickListener(new OnItemClickListener() 
     { 

      public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
        long arg3) 
      { 
       TextView tx = (TextView) view.findViewById(R.id.date); 
       String s = tx.getText().toString(); 
       Intent intent = new Intent(HistoryActivity.this, EditRecordActivity.class);   
       intent.putExtra("date", s); //I can't do this anymore because now the EditRecordActivity will not know the exact record to be edited. 
       startActivity(intent); 

      } 
     }); 

도와주세요.

답변

0

그것은 OnItemClickListener의 모든()의

public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
       long arg3) 

당신이 올바른지, 당신은 고유 ID가없는,하지만 당신은 LoaderManager으로 CursorAdapter를 사용하여 해당 변경 될 수 있습니다. CursorLoader를 사용하는 경우, 인수 long arg3가 고유 ID가됩니다. LoaderManager 및 아마도 ContentProvider과 함께 CursorLoader을 사용하면 좋은 부가 혜택이 될 수 있습니다. 어떻게 할 수 있는지에 관해서는 몇 가지 선택이 있습니다. 아이템을 ListView에 넣으면 setTag()의 고유 ID를 가진 태그를 줄 수 있습니다. 이미 구현 한 코드로 구현할 코드가별로 없습니다. 다른 옵션은 ListView의 위치 인 int arg2을 확인하는 것입니다. 단점은 데이터베이스의 고유 ID가 없다는 것입니다. 그러나 목록에서 무엇이 필요한지를 알려줍니다. 신분증이 필요하다면, 전적으로 당신이하는 일이 될 것입니다.

희망이 있습니다.

+0

도움 주셔서 감사합니다. –

관련 문제