2014-11-04 142 views
0

我是新來的android。我使用視圖持有者在我的Android應用程序中實現了自定義的ArrayAdapter。 的getView()我ArrayAdapter的功能參考如下:Android自定義ArrayAdapter列表 - Java

所有的
@Override 
public View getView(int position, View convertView, final ViewGroup parent) { 
    View row = convertView; 
    MyClassViewHolder myClassViewHolder; 
    MyClass myClass; 
    if(row == null) { 
     LayoutInflater inflater = ((Activity)mContext).getLayoutInflater(); 
     row = inflater.inflate(resourceId, parent, false); 
     if(resourceId == R.layout.my_row_item) { 
      myClassViewHolder = new MyClassViewHolder(); 
      myClassViewHolder.title = (EditText) row.findViewById(R.id.title); 
      myClassViewHolder.switch = (Switch) row.findViewById(R.id.switch); 
     } 
    } else { 
     myViewHolder = (MyViewHolder) row.getTag(); 
    } 
    if(resourceId == R.layout.my_row_item) { 
     myClass = (MyClass) myClassList.get(position); //myClassList sent as parameter to constructor of adapter 
     if(myClassViewHolder != null && myClass != null) { 
      myClassViewHolder.title.setText(myClass.getTitle()); 
      myClassViewHolder.switch.setChecked(myClass.isEnabled()); 
      myClassViewholder.id = myClass.getId(); 
      myClassViewHolder.switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        //GET ID OF THE ROW ITEM HERE 
       } 
      }); 
     } 
    } 
} 
  1. 首先我要一個id是從數據庫 每一行項目對其執行操作相關聯。所以請確認我所做的 的方式是對還是錯。
  2. 其次在上面的代碼中,我有一個作爲標題的字符串和每行 項目中的Switch。我想在每臺交換機上設置一個onClickListener。在切換 開關我想這是因爲每點提前1

由於相關的行項目的ID。如果我沒有正確描述我的問題,請告訴我。

+0

?而你可以得到它的行號(位置)已經? – Darpan 2014-11-04 10:36:24

+0

那麼我想在切換開關時,在與rowitem相關的數據庫中執行一些操作。有沒有其他方法可以實現它? – 2014-11-04 10:45:58

+0

爲每個ID設置標籤,getTag()識別它? – Darpan 2014-11-05 05:59:10

回答

0

您可能需要爲每個行項目設置標籤,因此您可以識別每一行。下面是一個例子 -

row.setTag(1); 

,並以檢索標籤 - 爲什麼你需要ID爲每行

row.getTag(); 
1

是的,你的代碼看起來很好,至於第二部分,你應該在交換機上創建一個監聽器,然後從該行獲取id並從一個id切換到另一個。

+0

謝謝你的回覆。正如你所看到的,我已經在交換機上設置了onCheckedChangeListener。請你告訴我如何做到這一點。我怎樣才能引用交換機監聽器中的列表項? – 2014-11-04 10:06:35

相關問題