如何获取列表视图中复选框的ID或位置?
当isChecked = true或false时,我需要更新数据库,但是我需要位置…
也许我可以做与OnItemClick方法相同的事情?
@OverrIDepublic voID onItemClick(AdapterVIEw<?> parent, VIEw itemClicked, int position, long ID){ CheckBox cbx = (CheckBox)itemClicked.findVIEwByID(R.ID.cbxList); cbx.setonCheckedchangelistener(new OnCheckedchangelistener() { @OverrIDe public voID onCheckedChanged(Compoundbutton buttonVIEw, boolean isChecked) { } }); if(cbx.getVisibility() == VIEw.VISIBLE){ ContentValues cv = new ContentValues(); if(cbx.isChecked()){ cbx.setChecked(false); int cbxID = 0; cv.put(DB.CBX, cbxID); mDB.updateCbx(cv, ID); Log.d(LOG, " updated with ID = " + ID + " and cbxID is " + cbxID); }else{ cbx.setChecked(true); int cbxID = 1; cv.put(DB.CBX, cbxID); mDB.updateCbx(cv, ID); Log.d(LOG, " updated with ID = " + ID + " and cbxID is " + cbxID); } }else{ Intent intentContactVIEw = new Intent(this, ContactVIEw.class); intentContactVIEw.putExtra("ID", ID); startActivity(intentContactVIEw); } }
使用SimpleCursorAdapter从类获取方法getVIEw()…同样的问题,如何获取所选复选框的位置或ID?
@OverrIDepublic VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { if (convertVIEw == null) { convertVIEw = mLayoutInflater.inflate(R.layout.item, parent, false); vIEw = super.getVIEw(position, convertVIEw, parent); CheckBox cbx = (CheckBox)convertVIEw.findVIEwByID(R.ID.cbxList); } return vIEw;}
和我的带有ListvIEw项的Xml文件.这里所说的复选框是不可见的,但是当我调用它们时它们才出现(只是为了理解.)
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_margin="@dimen/margin" androID:orIEntation="horizontal" > <linearLayout androID:layout_wIDth="0dp" androID:layout_height="wrap_content" androID:layout_margin="@dimen/margin" androID:layout_weight="0.5" androID:orIEntation="horizontal" > <linearLayout androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_margin="@dimen/margin" androID:orIEntation="vertical" > <ImageVIEw androID:ID="@+ID/ivPhoto" androID:layout_wIDth="@dimen/imageWIDth" androID:layout_height="@dimen/imageHeight" androID:layout_gravity="center_vertical" androID:contentDescription="@string/photoDescription" androID:src="@drawable/default_contact" /> </linearLayout> <TextVIEw androID:ID="@+ID/tvname" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center_vertical" androID:layout_marginleft="@dimen/margin" androID:text="" androID:textSize="@dimen/textSize" /> <TextVIEw androID:ID="@+ID/tvSurname" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center_vertical" androID:layout_marginleft="@dimen/margin" androID:text="" androID:textSize="@dimen/textSize" /> </linearLayout> <CheckBox androID:ID="@+ID/cbxList" androID:layout_wIDth="0dp" androID:layout_height="wrap_content" androID:layout_gravity="center" androID:layout_marginleft="@dimen/margin" androID:layout_weight="0.2" androID:focusable="false" androID:visibility="invisible" /></linearLayout>
解决方法:
您可以将标签设置为复选框,并在获得事件的回调时,可以从回调中提供的视图中提取标签.设置标签中的位置(setTag()是设置标签的方法).
因此,您的内容应类似于以下内容:
public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent){ //... CheckBox cbx; //... cbx.setTag(position); cbx.setonCheckedchangelistener(checkListener); //...}OnCheckedchangelistener checkListener = new OnCheckedchangelistener(){ @OverrIDe public voID onCheckedChanged(Compoundbutton buttonVIEw, boolean isChecked) { int position = buttonVIEw.getTag(); }};
总结 以上是内存溢出为你收集整理的android-如何获取复选框在列表视图中的位置全部内容,希望文章能够帮你解决android-如何获取复选框在列表视图中的位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)