2011-10-04 34 views
0

我有我的列表行佈局與一些文本和應該模擬按鈕的佈局。我面臨的問題是我總是會得到光標中的最新數據,這意味着如果我單擊第一行的佈局,我應該得到grp id 1和grp名稱ONE,但我得到grp id 3,grp名稱THREE不管我在列表視圖中點擊哪個佈局。有什麼方法可以解決這個問題?我的代碼:Android在點擊佈局時從光標獲取數據?

在getView方法

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

就檢查它,我認爲它應該得到解決這樣的:

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

相關問題