2015-02-23 38 views
0

我有列表視圖切換按鈕。當我檢查第一個切換按鈕第五切換按鈕會自動檢查。當我檢查第二切換按鈕第七切換按鈕得到檢查。並且當我取消選中第五切換按鈕時,它是空值烤麪包。當我檢查一個切換按鈕第五切換按鈕會自動檢查在Android的列表視圖

下面是我的代碼

public class CustomUsersAdapter extends ArrayAdapter<User> 
{ 

public CustomUsersAdapter(Context context, ArrayList<User> users) 
    { 

      super(context, 0, users); 

    } 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    //Get an instance of our cell holder                   
    Holder holder; 
    holder = new Holder(); 

    // Get the data item for this position 
     User user = getItem(position);  

    // Check if an existing view is being reused, otherwise inflate the view 
    if (convertView == null) 
    { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_main, parent, false); 

     // Lookup view for data population 
     holder.tvName = (TextView) convertView.findViewById(R.id.tvName); 
     holder.tvHome = (TextView) convertView.findViewById(R.id.tvHometown); 
     holder.tgbtn = (ToggleButton) convertView.findViewById(R.id.toggleButton1); 


     convertView.setTag(holder); //Add this 
    } 
    else 
    { 

     holder= (Holder) convertView.getTag(); 
    } 

    holder.tvName.setText(user.name); 
    holder.tvHome.setText(user.hometown); 

    /** The clicked Item in the ListView */ 
    RelativeLayout rLayout = (RelativeLayout) convertView; 

    /** Getting the toggle button corresponding to the clicked item */ 

    final ToggleButton tbt = (ToggleButton) rLayout.getChildAt(2); 

    tbt.setOnClickListener(new OnClickListener() { 
     String homet; 
     @Override 
     public void onClick(View v) { 

      // TODO Auto-generated method stub 
      if (tbt.isChecked()) { 
       //tbt.setChecked(true); 
       ViewGroup parent = (ViewGroup) v.getParent(); 
       TextView tvName = (TextView) parent.findViewById(R.id.tvName); 
       homet=tvName.getText().toString(); 

        Toast.makeText(getContext(),homet+"Blocked", Toast.LENGTH_SHORT).show(); 
       } else { 
        tbt.setChecked(false); 
        Toast.makeText(getContext(),homet+ "Unblocked", Toast.LENGTH_SHORT).show(); 
       } 
     } 
     }); 

    // Return the completed view to render on screen 
     return convertView; 

     } 
      //this holder class will be filled from the layout xml and attached to the row as a tag object 


    private class Holder 
    { 
     TextView tvName; 
     TextView tvHome; 
     ToggleButton tgbtn,tg1; 
    } 
} 

請幫我...

以及如何保存所有的切換按鈕的狀態,這樣我可以使用的保存狀態保存切換的狀態按鈕,當應用程序重新打開。

回答

0

由於ListView回收機制,您的問題正在發生。 ListView回收其子行。爲了更好的理解,看看here
至於解決你的問題,很多人已經問過這個問題。我能找到的最好的博客是this。你也可能想檢查thisthis

+0

thanx爲您的答覆。我瞭解回收機制,但沒有得到任何解決方案,以避免這種情況,如果我有一個togglebutton,如果我檢查它在位置0(讓item1也有一個togglebutton和ichecked它),所以當我向下滾動時,我會見第8項togglebutton已被選中 – Simran 2015-02-24 06:22:08