Android 如何在自定义列表视图中获取特定交换机的id并进行检查
这是我的getView()代码。我想访问此自定义列表视图中的特定开关。我做错了什么Android 如何在自定义列表视图中获取特定交换机的id并进行检查,android,listview,Android,Listview,这是我的getView()代码。我想访问此自定义列表视图中的特定开关。我做错了什么 public View getView(final int position, View convertView, ViewGroup parent) { if(convertView==null) { //inflate the custom layout convertView = inflat
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);
}
}
您应该为模型中标记的缺席添加字段
if(studentList.get(position).get("absentMarked")==1){
Log.d("Entered","Yes");
viewHolder.sw.setChecked(true);
}else{ viewHolder.sw.setChecked(false); }
并为开关添加setOnCheckedChangeListner切换值Absent,标记如下:
sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b){
setAbsentMarked(1);
} else{
setAbsentMarked(0);
}
});
此处标记了什么?要访问哪个开关?viewHolder.sw是我要访问的切换开关。@AnkiiRawat absentMarked是一个包含0和1的数组列表。我想检查对应于1的开关是否为真value@MridulSKumar我建议您将缺席标记放在模型中,并以
if(studentList.get(position.get(“缺席标记”)==1){Log.d(“Entered”,“Yes”);viewHolder.sw.setChecked(true);}