Проблема:
Вызов метода [Yesvalues], который запрашивает и хранит все значения «Да» в [swlist] из таблицы и добавляет запись будущих значений «Да» при взаимодействии пользователя с показом Listview.
Проверьте позицию строки [pos], получите ICODE строки и перекрестную проверку с помощью [swlist], чтобы включить / выключить кнопку переключения этой строки. Метод getView () будет делать то же самое для каждого элемента строки и его переключателя рядом.
Записывать или удалять «Да» при сохранении, когда пользователь взаимодействует [Switch OnClickListener / Save OnClickListener].
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
public class Ecs extends ListActivity {
public static ArrayList<String> firstList ;
public static ArrayList<String> swlist ;
TextView searchtext;
Con control = new Con(this);
private void DNat() {
if (searchtext.getText().toString().length() > 3) {
swlist = control.Yesvalues(searchtext.getText().toString()); /// STEP 1
firstList = control.Sear(searchtext.getText().toString());
if (myList.size() != 0) {
lv = getListView();
adapter = new Apache(Ecs.this, firstList, swlist);
lv.setAdapter(adapter);
control.close();
}
}
}
}
public static class Apache extends ArrayAdapter<HashMap<String, String>> {
public static final String DN = "DN";// 0 text(String)
public static ArrayList<String> noon ;
public ArrayList<HashMap<String, String>> firstList;
Activity activity;
public Apache(Activity activity, ArrayList<HashMap<String, String>> firstList, ArrayList<HashMap<String, String>> swlist){
super(activity, R.layout.simple, firstList);
this.activity = activity;
this.firstList = firstList;
this.noon = swlist;
}
@Override
public int getCount() {
return firstList.size();
}
@Override
public HashMap<String, String> getItem(int position) {
return Ecs.firstList.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final HashMap<String, String> map = myList.get(position);
final ItemViewHolder viewHolder;
final int pos = position;
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.simple, parent, false);
viewHolder = new ItemViewHolder();
viewHolder.TDD = (TextView) convertView.findViewById(R.id.txtdnno);
viewHolder.SWW = (Switch) convertView.findViewById(R.id.sw);
convertView.setTag(viewHolder);
} else {
viewHolder = (ItemViewHolder) convertView.getTag();
}
viewHolder.TDD.setText(map.get(DN));
viewHolder.SWW.setText(map.get(TYPE));
viewHolder.SWW.setChecked(false);
viewHolder.SWW.setTag("SWITCH");
final HashMap<String, String> tyes = new HashMap<String, String>(); ///STEP 2
tyes.put(DDN, myList.get(pos).get(DN));
tyes.put(IICODE, myList.get(pos).get(ICODE));
if (noon.contains(tyes) {
viewHolder.SWW.setChecked(true);
}
viewHolder.SWW.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = v.getTag().toString();
if (title.equals("SWITCH")) { /// STEP 3
if (viewHolder.SWW.isChecked()) {
noon.add(tyes);
} else {
if (noon.contains(tyes) && viewHolder.SWW.getText().equals("No")) {
noon.remove(tyes);
}
}
}
}
});
notifyDataSetChanged();
return convertView;
}
public class ItemViewHolder {
TextView TDD;
Switch SWW;
}
}
Чтобы запросить все переключатели, записанные как ДА:
public class Con extends AppCompatActivity {
public Con() {}
public ArrayList<HashMap<String, String>> Yesvalues(String DN) {
ArrayList<HashMap<String, String>> yeslist;
String Yes="Yes";
yeslist = new ArrayList<HashMap<String, String>>();
int sval=Integer.parseInt(String.valueOf(DN));
String selectQuery = "SELECT DN, ICODE FROM " + Tablename
+ " WHERE DN =" + sval + " AND STYPE = " + "'"+ Yes +"'";
SQLiteDatabase database = dbHelper.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
HashMap<String, String> yesmap = new HashMap<String, String>();
yesmap.put(DNNO, cursor.getString(0));
yesmap.put(ITEMCODE, cursor.getString(1));
yeslist.add(yesmap);
} while (cursor.moveToNext());
}
return yeslist;
}
}