2015-04-23 48 views
-1

这是我的getView()代码。我想访问这个自定义列表视图中的特定开关。我究竟做错了什么 ?如何在自定义列表视图中获取特定开关的ID并进行检查

public View getView(final int position, View convertView, ViewGroup parent) { 


      if(convertView==null) 
      { 
       //inflate the custom layout 
       convertView = inflater.from(parent.getContext()).inflate(R.layout.list_item,parent,false); 
       viewHolder=new ViewHolder(); 

       //cache the views 
       viewHolder.sw=(Switch) convertView.findViewById(R.id.switch1); 
       viewHolder.name=(TextView) convertView.findViewById(R.id.name); 
       viewHolder.rollno=(TextView) convertView.findViewById(R.id.roll); 

       viewHolder.id=(TextView) convertView.findViewById(R.id.ID); 

       //link the cached views to the convertview 
       convertView.setTag(viewHolder); 

      } 
      else 
       viewHolder=(ViewHolder) convertView.getTag(); 



      //set the data to be displayed 

      viewHolder.name.setText(studentList.get(position).get("name").toString()); 
      viewHolder.rollno.setText(studentList.get(position).get("roll_no").toString()); 
      viewHolder.id.setText(studentList.get(position).get("id").toString()); 
      viewHolder.sw.setText(""); 

      for (int s : absentMarked) { 

       Log.d("marked",Integer.toString(s)); 

       if(s==1){ 

        Log.d("Entered","Yes"); 

        viewHolder.sw=(Switch) convertView.findViewById(R.id.switch1); 
        viewHolder.sw.setChecked(true); 
       } 

      } 

这是存在问题的地方。这将检查所有开关是否为真。我想访问我的列表视图中的特定交换机并检查它。 absentMarked是包含0和1。我要检查对应值1

for (int s : absentMarked) { 

       Log.d("marked",Integer.toString(s)); 

       if(s==1){ 

        Log.d("Entered","Yes"); 

        viewHolder.sw=(Switch) convertView.findViewById(R.id.switch1); 
        viewHolder.sw.setChecked(true); 
       } 

      } 
+0

这到底是怎么absentMarked? –

+0

哪个交换机要访问? –

+0

viewHolder.sw是拨动开关我要访问.. –

回答

2

你应该在模型添加字段AbsentMarked切换到真正的数组列表。

if(studentList.get(position).get("absentMarked")==1){ 
    Log.d("Entered","Yes"); 
    viewHolder.sw.setChecked(true); 
    }else{ viewHolder.sw.setChecked(false); } 

,并添加setOnCheckedChangeListner用于开关absentMarked的触发值如下:

sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      if(b){ 
       setAbsentMarked(1); 
      } else{ 
       setAbsentMarked(0); 
     } 
    }); 
+0

谢谢。有用.. –

相关问题