내 응용 프로그램에서 사용자가 여러 항목을 선택하면 ListView에있는 일부 스위치와 확인 버튼을 표시합니다.ListView에서 전환 상태 가져 오기
I는 버튼에 OnClickListener를() 함수를 DB에 값을 삽입 할 때 문제가 나는 스위치에서 텍스트를 검색 할 수 있지만되지 않으며 (예 참된 항상 출력) 그 상태
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ListAdapter adapter = list.getAdapter();
MyDatabase db = new MyDatabase(cntx);
db.open();
for(int n=0;n<adapter.getCount();n++)
{
View rowview = adapter.getView(n, null, null);
Switch swtc = (Switch) rowview.findViewById(R.id.switch1);
String[] args = {(String)swtc.getText()};
if(swtc.isChecked())
{
Log.i("update", args[0]+" going to be true");
}
else
{
Log.i("update", args[0]+" going to be false");
}
int a = db.updateAlert(swtc.isChecked(), MyDatabase.Tab_Cal_Set.Cal+"=?", args);
Toast.makeText(cntx, "affected: "+Integer.toString(a), Toast.LENGTH_LONG).show();
}
db.close();
}
});
PS : adapter는 ListView 용으로 만든 arrayadapter이며 cntx는 응용 프로그램의 컨텍스트이고 MyDatabase는 Sqlite 데이터베이스를 관리하기 위해 제공하는 사용자 정의 클래스입니다.
public class NotificationElementList extends ArrayAdapter<String>{
private final Activity context;
private final List<String> titles;
private final List<String> imgs;
private final List<Boolean> alert;
public NotificationElementList(Activity context, List<String> titles, List<String> imgs, List<Boolean> alert) {
super(context, R.layout.list_single, titles);
this.context = context;
this.titles = titles;
this.imgs = imgs;
this.alert = alert;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.notification_list_element, null, true);
Switch switch_text = (Switch) rowView.findViewById(R.id.switch1);
switch_text.setChecked(alert.get(position));
switch_text.setText(titles.get(position));
return rowView;
}
} 당신이 방법을 ArrayAdapter.getView하는 convertView 인수를 제공하지 않는 것처럼
ListView에는 어떤 어댑터를 사용하고 있습니까? 아마 BaseAdapter를 확장하고 있습니까? 어댑터 코드를 제공 할 수 있습니까? –
확실합니다. 여기 있습니다. – donadev