This is my getView() code. I want to access a particular switch in this custom listview. What am i doing wrong ?
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);
}
}
This is where problem exist. This checks all the switches to true. I want to access a particular Switch in my list View and check it. absentMarked is an array list which contains 0 and 1. I want to check the switch to true corresponding to the 1 value
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 :(得分:2)
您应该在模型中为AbsentMarked添加字段。
sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b){
setAbsentMarked(1);
} else{
setAbsentMarked(0);
}
});
并添加setOnCheckedChangeListner以切换absentMarked的切换值,如下所示:
import java.io.FileWriter;
import java.io.IOException;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
try {
Element FICHADAS = new Element("FICHADAS");
Document doc = new Document(FICHADAS);
doc.setRootElement(FICHADAS);
Element fichada = new Element("fichada");
fichada.addContent(new Element("N_Terminal").setText("XX"));
fichada.addContent(new Element("Tarjeta").setText("XX"));
fichada.addContent(new Element("Fecha").setText("XX"));
fichada.addContent(new Element("Hora").setText("XX"));
fichada.addContent(new Element("Causa").setText("XX"));
doc.getRootElement().addContent(fichada);
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.setFormat(Format.getPrettyFormat());
xmlOutput.output(doc, new FileWriter("c:\file.xml"));
} catch(IOException e) {
}