У меня есть код, в котором пользователю отображается список элементов. Рядом с элементами списка находится кнопка-переключатель. Поэтому, когда пользователь включает переключатель, срабатывает сигнал тревоги. Теперь проблема в том, что когда я устанавливаю кнопку переключения 1-го элемента в списке, он исчезает и / или сбрасывается, когда я прокручиваю до конца списка и снова возвращаюсь к первому элементу. Я полностью сбит с толку, установив это, чтобы оставаться там выбранным. Попросите кого-нибудь на этом форуме помочь мне.
Мой класс CSVAdapter. Прилагаю сюда.
public class CSVAdapter extends ArrayAdapter<clock>{
Context ctx;
String line;
int position=-1;
ViewHolder myviewholder;
mrvtoparanur mp;
clock clk;
HashMap<Integer, Boolean> btnstate=new HashMap<Integer,Boolean>();
public CSVAdapter(Context context,int textViewResourceId, ArrayAdapter<clock> clk)
{
super (context,R.layout.checkbox,textViewResourceId);
this.ctx = context;
loadArrayFromFile();
}
static class ViewHolder
{
TextView text;
ToggleButton tb;
}
@Override
public View getView(final int pos,View convertView,final ViewGroup parent){
View row=convertView;
if(row==null){
LayoutInflater vi=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row=vi.inflate(R.layout.checkbox, parent,false);
myviewholder.text=(TextView)convertView.findViewById(R.id.code);
myviewholder.tb=(ToggleButton)convertView.findViewById(R.id.checkBox1);
myviewholder=new ViewHolder();
position=pos;
row.setTag(myviewholder);
//Log.d("KEY", "VIEW CREATED NEWLY");
//myviewholder.tb.setChecked(btnstate.get(pos));
}
else
{
myviewholder=(ViewHolder)convertView.getTag();
Log.d("KEY", "VIEW RECYCLED");
btnstate.size();
btnstate.put(position, true);
}
myviewholder.text.setText(getItem(pos).getTime());
myviewholder.tb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
//myviewholder.tb.setChecked(btnstate.get(position));
btnstate.putAll(btnstate);
btnstate.put(position, true);
}
});
return row;
}
private void loadArrayFromFile(){
try
{
InputStream is=ctx.getAssets().open("mrvtoparanur.csv");
BufferedReader reader=new BufferedReader(new InputStreamReader(is));
//Read each line
while((line = reader.readLine())!=null){
clock cur = new clock();
cur.setTime(line);
this.add(cur);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}