java-如何处理列表视图中的复选框并从自定义基本适配器发送回信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何处理列表视图中的复选框并从自定义基本适配器发送回信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3648字,纯文字阅读大概需要6分钟。
内容图文
![java-如何处理列表视图中的复选框并从自定义基本适配器发送回信息](/upload/InfoBanner/zyjiaocheng/681/f9704562399446189fa86afabca36ee8.jpg)
我有一个列表视图,每个项目都包含一个复选框和其他各种文本视图.在主要活动中,我有一个名为listOfStuff的对象的ArrayList.在主要活动中,我正在定义和使用自定义基本适配器.在getView方法中,我为复选框定义了一个侦听器,如下所示:
holder.cbCompletionStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.cbCompletionStatus.isChecked()){
listOfStuff.get(position).setComplete(1);
} else {
listOfStuff.get(position).setComplete(0);
};
}
});
我的问题是我不知道如何访问listOfStuff及其中的对象来修改其中的信息.如果希望,if / else语句中的代码可以让我了解我正在尝试执行的操作.只是一个简短的警告,我不仅是Android和Java的新手,还是整体编程领域的新手.谢谢.
更新:
因此,我最终自行解决了这个问题.我只需要在Main Activity中将listOfStuff Arraylist设为静态.然后,我可以在Main Activity中调用一个静态函数来操作所需的Array列表中的任何数据,如下所示:
MainActivity.checkBoxClicked(result,position);
解决方法:
这是我的课:
class ImageInfoAdapter extends BaseAdapter{
@Override
public int getCount() {
if(viewcount == 0){
return 0;
}
return viewcount;
}
@Override
public Object getItem(int position) {
return isSentAlList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
final ViewHolder viewHolder;
View rowView=view;
if(rowView==null){
LayoutInflater layoutinflate = LayoutInflater.from(ListPictures.this);
rowView=layoutinflate.inflate(R.layout.listviewayout, parent, false);
viewHolder = new ViewHolder();
viewHolder.textViewisSentFlag = (TextView)rowView.findViewById(R.id.textViewisSentFlag);
viewHolder.imageViewToSent = (ImageView)rowView.findViewById(R.id.imageViewToSent);
viewHolder.checkBoxToSend = (CheckBox)rowView.findViewById(R.id.checkBoxToSend);
rowView.setTag(viewHolder);
} else{
viewHolder = (ViewHolder) rowView.getTag();
}
viewHolder.ref = position;
Log.i("InfoLog","viewHolder.ref = position; "+viewHolder.ref);
viewHolder.textViewisSentFlag.setText(isSentAlList.get(position));
Bitmap blob = BitmapFactory.decodeByteArray(imageAlList.get(position), 0, imageAlList.get(position).length);
viewHolder.imageViewToSent.setImageBitmap(blob);
viewHolder.checkBoxToSend.setClickable(true);
if(checked.containsKey(""+viewHolder.ref)){ ///if this id is present as key in hashmap
Log.i("InfoLog","checked.containsKey "+viewHolder.ref);
if(checked.get(""+viewHolder.ref).equals("true")){ //also check whether it is true or false to check/uncheck checkbox
Log.i("InfoLog","checked.get(position) "+viewHolder.ref);
viewHolder.checkBoxToSend.setChecked(true);
} else
viewHolder.checkBoxToSend.setChecked(false);
} else
viewHolder.checkBoxToSend.setChecked(false);
viewHolder.checkBoxToSend.setOnCheckedChangeListener(new OncheckchangeListner(viewHolder));
return rowView;
}//End of method getView
}//End of class ImageInfo
class ViewHolder{
private TextView textViewisSentFlag = null;
private ImageView imageViewToSent = null;
private CheckBox checkBoxToSend = null;
int ref;
}//End of class ViewHolder
/////////////////////////
这是我的oncheckchangedlistener
////////////////////////
class OncheckchangeListner implements OnCheckedChangeListener{
ViewHolder viewHolder = null;
public OncheckchangeListner(ViewHolder viHolder) {
viewHolder = viHolder;
}
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(viewHolder.checkBoxToSend.equals(buttonView)) {
if(!isChecked) {
Log.i("InfoLog","checked.get before "+checked.get(""+viewHolder.ref));
checked.put(""+viewHolder.ref,"false");
Log.i("InfoLog","checked.get after "+checked.get(""+viewHolder.ref));
} else
checked.put(""+viewHolder.ref,"true");
} else
Log.i("InfoLog","i m in checkchange ");
}
}
内容总结
以上是互联网集市为您收集整理的java-如何处理列表视图中的复选框并从自定义基本适配器发送回信息全部内容,希望文章能够帮你解决java-如何处理列表视图中的复选框并从自定义基本适配器发送回信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。