2011-10-04 8 views
0

버튼을 에뮬레이트해야하는 레이아웃과 텍스트가있는 목록 행 레이아웃이 있습니다. 내가 직면하고있는 문제는 내가 커서의 최신 데이터를 얻을 것이다. 즉, 행 1의 레이아웃을 클릭하면 grp id 1과 grp name 1을 얻는다. 그러나 grp id 3, grp name THREE 레이아웃에 상관없이 내가 listview에서 클릭한다. 이 문제를 해결하는 방법은 무엇입니까? 내 코드 :레이아웃을 클릭하면 Android가 커서에서 데이터를 가져 옵니까?

ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      holder.text2 = (TextView) vi.findViewById(R.id.text2); 
      holder.layout1 = (LinearLayout)vi.findViewById(R.id.info); 
      vi.setTag(holder); 
     } else { 
      holder = (ViewHolder) vi.getTag(); 
     } 

     String grpCount = c.getString(c 
       .getColumnIndex(TestDbAdapter.KEY_GRP_COUNT)); 

     holder.text2.setText("Channels: " + grpCount); 

     holder.layout1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       System.out.println(c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_NAME))); 
       System.out.println(c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_ID))); 
      } 
     }); 

     return vi; 

답변

1

그냥 그것을 확인, 내가 이렇게 해결 얻어야한다 생각의 getView 방법에

:

String grpCount = c.getString(c 
       .getColumnIndex(TestDbAdapter.KEY_GRP_COUNT)); 
final String grpName = c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_NAME)); 
final String grpId = c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_ID)); 

     holder.text2.setText("Channels: " + grpCount); 

     holder.layout1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       System.out.println(grpName); 
       System.out.println(grpId); 
      } 
     }); 
+0

감사합니다 아주 많이,이 일! – Maurice

관련 문제