单击图像视图时获取空对象引用
Getting null object reference on click the image view
我有适配器 class 单击项目图像视图时我想隐藏视图的某些项目。但是当我将可见性设置为可见时,我得到的结果是空的。
代码如下:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.kuliza.treebo.demo.Models.Answer;
import com.kuliza.treebo.demo.Models.ListTypeModel;
import com.kuliza.treebo.demo.R;
import com.kuliza.treebo.demo.Views.SegmentedRadioGroup;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class DailyTaskExpandableAdapter extends BaseExpandableListAdapter {
private Context mContext;
private List<String> mListDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<ListTypeModel>> mListDataChild;
MyViewHolder mViewHolder;
LayoutInflater infalInflater ;
public DailyTaskExpandableAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<ListTypeModel>> listChildData) {
this.mContext = context;
this.mListDataHeader = listDataHeader;
this.mListDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this.mListDataChild.get(this.mListDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
infalInflater = (LayoutInflater) this.mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int itemType = getChildType(groupPosition,childPosition);
if (convertView == null) {
switch (itemType) {
case 0:
convertView = infalInflater.inflate(R.layout.task_list_subhead_row, parent, false);
mViewHolder = new MyViewHolder();
convertView.setTag(mViewHolder);
break;
case 1:
convertView = infalInflater.inflate(R.layout.task_list_comment_row, parent, false);
mViewHolder = new MyViewHolder();
mViewHolder.segmentImg = (SegmentedRadioGroup) convertView.findViewById(R.id.segment_img);
mViewHolder.mCommentlayout=(RelativeLayout)convertView.findViewById(R.id.comment_layout);
mViewHolder.mComment=(EditText)convertView.findViewById(R.id.comment);
mViewHolder.mCancel=(ImageView)convertView.findViewById(R.id.cancel);
mViewHolder.mSubmit=(ImageView)convertView.findViewById(R.id.submit);
mViewHolder.mEdit=(ImageView)convertView.findViewById(R.id.edit);
// view.setTag(R.id.item_name, _id);
convertView.setTag(mViewHolder);
break;
}
}
else{
mViewHolder = (MyViewHolder) convertView.getTag();
}
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
mViewHolder.TaskName.setText(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getTask().toString());
if(itemType==1){
if(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.off_button);
else if(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("Yes"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.on_button);
else
mViewHolder.segmentImg.setBackgroundResource(R.drawable.neutral_button);
if(!mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No")){
mViewHolder.mCommentlayout.setVisibility(View.GONE);
}
else{
mViewHolder.mCommentlayout.setVisibility(View.VISIBLE);
mViewHolder.mCancel.setVisibility(View.VISIBLE);
mViewHolder.mSubmit.setVisibility(View.VISIBLE);
}
mViewHolder.segmentImg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.off_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("No");
} else if (checkedId == R.id.neutral_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Neutral");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
} else if (checkedId == R.id.on_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Yes");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
}
notifyDataSetChanged();
}
});
/* mViewHolder.mComment.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
// final int position = (Integer)v.getTag();
final EditText Caption = (EditText) v;
String text = Caption.getText().toString();
mViewHolder.mComment.setText(text);
}
}
});*/
mViewHolder.mSubmit.setTag(mViewHolder);
mViewHolder.mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mViewHolder.mCancel.getVisibility()==View.VISIBLE){
mViewHolder.mCancel.setVisibility(View.GONE);
}
mViewHolder.mSubmit.setVisibility(View.GONE);
//mSubmit.setVisibility(View.GONE);
mViewHolder.mEdit.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
});
mViewHolder.mEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mSubmit.setVisibility(View.GONE);
}
});
}
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return mListDataChild.get(mListDataHeader.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition) {
return this.mListDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.mListDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.task_list_parent,parent, false);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.eventsListEventRowText);
lblListHeader.setTextColor(mContext.getResources().getColor(R.color.black));
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
@Override
public int getChildType(int groupPosition, int childPosition) {
int result=1;
if(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getType()==0){
result=0;
}
return result;
}
@Override
public int getChildTypeCount() {
return 2;
}
private static class MyViewHolder {
TextView TaskName;
SegmentedRadioGroup segmentImg;
RelativeLayout mCommentlayout;
ImageView mSubmit,mCancel,mEdit;
EditText mComment;
}
public ArrayList<Answer> submitList(){
ArrayList<Answer> result =new ArrayList<>();
result.clear();
for(int i=0;i<mListDataChild.size();i++){
for(int j=0;j<mListDataChild.get(getGroup(i)).size();j++){
if(mListDataChild.get(getGroup(i)).get(j).getQueryId()!=-1){
result.add(new Answer(mListDataChild.get(getGroup(i)).get(j).getQueryId(),mListDataChild.get(getGroup(i)).get(j).getAnswer(),mListDataChild.get(getGroup(i)).get(j).getComment()));
}
}
}
return result;
}
}
我缺少什么 here.this 行变得空
if(mViewHolder.mCancel.getVisibility()==View.VISIBLE){
谢谢
您需要先获取ViewHolder实例。
在 getView()
内 return 之前 convertView
做:
mViewHolder.mSubmit.setTag(mViewHolder);
然后你就可以随意取回了:
mViewHolder.mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewHolder mViewHolder = (ViewHolder)v.getTag();
if(mViewHolder.mCancel.getVisibility()==View.VISIBLE){
mViewHolder.mCancel.setVisibility(View.GONE);
}
mViewHolder.mSubmit.setVisibility(View.GONE);
notifyDataSetChanged();
}
});
编辑:
您的代码存在一些大问题。最大的一个是您只有一个 ViewHolder
的实例,而不是 Adapter
.
的每个 View
的实例
此外,每次调用 getChildView()
时,您都会一次又一次地创建 LayoutInflater
,而不是在 Adapter
.
中创建一次
此外,您在 getChildView()
的每个 运行 分配监听器,这也需要在 inflation 中按时完成。
另外这一行:
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
需要在 inflation.
内
总而言之,您的代码需要看起来像这样(只是更改了方法):
public class DailyTaskExpandableAdapter extends BaseExpandableListAdapter {
private Context mContext;
private List<String> mListDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<ListTypeModel>> mListDataChild;
LayoutInflater infalInflater;
public DailyTaskExpandableAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<ListTypeModel>> listChildData) {
this.mContext = context;
this.mListDataHeader = listDataHeader;
this.mListDataChild = listChildData;
infalInflater = (LayoutInflater) this.mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
MyViewHolder mViewHolder = null;
int itemType = getChildType(groupPosition, childPosition);
if (convertView == null) {
switch (itemType) {
case 0:
convertView = infalInflater.inflate(R.layout.task_list_subhead_row, parent, false);
mViewHolder = new MyViewHolder();
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
convertView.setTag(mViewHolder);
break;
case 1:
convertView = infalInflater.inflate(R.layout.task_list_comment_row, parent, false);
mViewHolder = new MyViewHolder();
mViewHolder.segmentImg = (SegmentedRadioGroup) convertView.findViewById(R.id.segment_img);
mViewHolder.mCommentlayout = (RelativeLayout) convertView.findViewById(R.id.comment_layout);
mViewHolder.mComment = (EditText) convertView.findViewById(R.id.comment);
mViewHolder.mCancel = (ImageView) convertView.findViewById(R.id.cancel);
mViewHolder.mSubmit = (ImageView) convertView.findViewById(R.id.submit);
mViewHolder.mEdit = (ImageView) convertView.findViewById(R.id.edit);
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
mViewHolder.segmentImg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.off_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("No");
} else if (checkedId == R.id.neutral_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Neutral");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
} else if (checkedId == R.id.on_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Yes");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
}
notifyDataSetChanged();
}
});
mViewHolder.mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyViewHolder mViewHolder = (MyViewHolder) ((View)v.getParent()).getTag(); //you need to access the convertView that hold this Tag inside
if (mViewHolder.mCancel.getVisibility() == View.VISIBLE) {
mViewHolder.mCancel.setVisibility(View.GONE);
}
mViewHolder.mSubmit.setVisibility(View.GONE);
//mSubmit.setVisibility(View.GONE);
mViewHolder.mEdit.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
});
mViewHolder.mEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mSubmit.setVisibility(View.GONE);
}
});
convertView.setTag(mViewHolder);
break;
}
} else {
mViewHolder = (MyViewHolder) convertView.getTag();
}
//the repopulation:
mViewHolder.TaskName.setText(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getTask().toString());
if (itemType == 1) {
if (mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.off_button);
else if (mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("Yes"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.on_button);
else
mViewHolder.segmentImg.setBackgroundResource(R.drawable.neutral_button);
if (!mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No")) {
mViewHolder.mCommentlayout.setVisibility(View.GONE);
} else {
mViewHolder.mCommentlayout.setVisibility(View.VISIBLE);
mViewHolder.mCancel.setVisibility(View.VISIBLE);
mViewHolder.mSubmit.setVisibility(View.VISIBLE);
}
}
return convertView;
}
}
我有适配器 class 单击项目图像视图时我想隐藏视图的某些项目。但是当我将可见性设置为可见时,我得到的结果是空的。
代码如下:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.kuliza.treebo.demo.Models.Answer;
import com.kuliza.treebo.demo.Models.ListTypeModel;
import com.kuliza.treebo.demo.R;
import com.kuliza.treebo.demo.Views.SegmentedRadioGroup;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class DailyTaskExpandableAdapter extends BaseExpandableListAdapter {
private Context mContext;
private List<String> mListDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<ListTypeModel>> mListDataChild;
MyViewHolder mViewHolder;
LayoutInflater infalInflater ;
public DailyTaskExpandableAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<ListTypeModel>> listChildData) {
this.mContext = context;
this.mListDataHeader = listDataHeader;
this.mListDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this.mListDataChild.get(this.mListDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
infalInflater = (LayoutInflater) this.mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int itemType = getChildType(groupPosition,childPosition);
if (convertView == null) {
switch (itemType) {
case 0:
convertView = infalInflater.inflate(R.layout.task_list_subhead_row, parent, false);
mViewHolder = new MyViewHolder();
convertView.setTag(mViewHolder);
break;
case 1:
convertView = infalInflater.inflate(R.layout.task_list_comment_row, parent, false);
mViewHolder = new MyViewHolder();
mViewHolder.segmentImg = (SegmentedRadioGroup) convertView.findViewById(R.id.segment_img);
mViewHolder.mCommentlayout=(RelativeLayout)convertView.findViewById(R.id.comment_layout);
mViewHolder.mComment=(EditText)convertView.findViewById(R.id.comment);
mViewHolder.mCancel=(ImageView)convertView.findViewById(R.id.cancel);
mViewHolder.mSubmit=(ImageView)convertView.findViewById(R.id.submit);
mViewHolder.mEdit=(ImageView)convertView.findViewById(R.id.edit);
// view.setTag(R.id.item_name, _id);
convertView.setTag(mViewHolder);
break;
}
}
else{
mViewHolder = (MyViewHolder) convertView.getTag();
}
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
mViewHolder.TaskName.setText(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getTask().toString());
if(itemType==1){
if(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.off_button);
else if(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("Yes"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.on_button);
else
mViewHolder.segmentImg.setBackgroundResource(R.drawable.neutral_button);
if(!mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No")){
mViewHolder.mCommentlayout.setVisibility(View.GONE);
}
else{
mViewHolder.mCommentlayout.setVisibility(View.VISIBLE);
mViewHolder.mCancel.setVisibility(View.VISIBLE);
mViewHolder.mSubmit.setVisibility(View.VISIBLE);
}
mViewHolder.segmentImg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.off_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("No");
} else if (checkedId == R.id.neutral_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Neutral");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
} else if (checkedId == R.id.on_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Yes");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
}
notifyDataSetChanged();
}
});
/* mViewHolder.mComment.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
// final int position = (Integer)v.getTag();
final EditText Caption = (EditText) v;
String text = Caption.getText().toString();
mViewHolder.mComment.setText(text);
}
}
});*/
mViewHolder.mSubmit.setTag(mViewHolder);
mViewHolder.mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mViewHolder.mCancel.getVisibility()==View.VISIBLE){
mViewHolder.mCancel.setVisibility(View.GONE);
}
mViewHolder.mSubmit.setVisibility(View.GONE);
//mSubmit.setVisibility(View.GONE);
mViewHolder.mEdit.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
});
mViewHolder.mEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mSubmit.setVisibility(View.GONE);
}
});
}
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return mListDataChild.get(mListDataHeader.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition) {
return this.mListDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.mListDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.task_list_parent,parent, false);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.eventsListEventRowText);
lblListHeader.setTextColor(mContext.getResources().getColor(R.color.black));
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
@Override
public int getChildType(int groupPosition, int childPosition) {
int result=1;
if(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getType()==0){
result=0;
}
return result;
}
@Override
public int getChildTypeCount() {
return 2;
}
private static class MyViewHolder {
TextView TaskName;
SegmentedRadioGroup segmentImg;
RelativeLayout mCommentlayout;
ImageView mSubmit,mCancel,mEdit;
EditText mComment;
}
public ArrayList<Answer> submitList(){
ArrayList<Answer> result =new ArrayList<>();
result.clear();
for(int i=0;i<mListDataChild.size();i++){
for(int j=0;j<mListDataChild.get(getGroup(i)).size();j++){
if(mListDataChild.get(getGroup(i)).get(j).getQueryId()!=-1){
result.add(new Answer(mListDataChild.get(getGroup(i)).get(j).getQueryId(),mListDataChild.get(getGroup(i)).get(j).getAnswer(),mListDataChild.get(getGroup(i)).get(j).getComment()));
}
}
}
return result;
}
}
我缺少什么 here.this 行变得空
if(mViewHolder.mCancel.getVisibility()==View.VISIBLE){
谢谢
您需要先获取ViewHolder实例。
在 getView()
内 return 之前 convertView
做:
mViewHolder.mSubmit.setTag(mViewHolder);
然后你就可以随意取回了:
mViewHolder.mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewHolder mViewHolder = (ViewHolder)v.getTag();
if(mViewHolder.mCancel.getVisibility()==View.VISIBLE){
mViewHolder.mCancel.setVisibility(View.GONE);
}
mViewHolder.mSubmit.setVisibility(View.GONE);
notifyDataSetChanged();
}
});
编辑:
您的代码存在一些大问题。最大的一个是您只有一个 ViewHolder
的实例,而不是 Adapter
.
View
的实例
此外,每次调用 getChildView()
时,您都会一次又一次地创建 LayoutInflater
,而不是在 Adapter
.
此外,您在 getChildView()
的每个 运行 分配监听器,这也需要在 inflation 中按时完成。
另外这一行:
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
需要在 inflation.
内总而言之,您的代码需要看起来像这样(只是更改了方法):
public class DailyTaskExpandableAdapter extends BaseExpandableListAdapter {
private Context mContext;
private List<String> mListDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<ListTypeModel>> mListDataChild;
LayoutInflater infalInflater;
public DailyTaskExpandableAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<ListTypeModel>> listChildData) {
this.mContext = context;
this.mListDataHeader = listDataHeader;
this.mListDataChild = listChildData;
infalInflater = (LayoutInflater) this.mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
MyViewHolder mViewHolder = null;
int itemType = getChildType(groupPosition, childPosition);
if (convertView == null) {
switch (itemType) {
case 0:
convertView = infalInflater.inflate(R.layout.task_list_subhead_row, parent, false);
mViewHolder = new MyViewHolder();
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
convertView.setTag(mViewHolder);
break;
case 1:
convertView = infalInflater.inflate(R.layout.task_list_comment_row, parent, false);
mViewHolder = new MyViewHolder();
mViewHolder.segmentImg = (SegmentedRadioGroup) convertView.findViewById(R.id.segment_img);
mViewHolder.mCommentlayout = (RelativeLayout) convertView.findViewById(R.id.comment_layout);
mViewHolder.mComment = (EditText) convertView.findViewById(R.id.comment);
mViewHolder.mCancel = (ImageView) convertView.findViewById(R.id.cancel);
mViewHolder.mSubmit = (ImageView) convertView.findViewById(R.id.submit);
mViewHolder.mEdit = (ImageView) convertView.findViewById(R.id.edit);
mViewHolder.TaskName = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
mViewHolder.segmentImg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.off_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("No");
} else if (checkedId == R.id.neutral_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Neutral");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
} else if (checkedId == R.id.on_button) {
mListDataChild.get(getGroup(groupPosition)).get(childPosition).setAnswer("Yes");
// mViewHolder.mCommentlayout.setVisibility(View.GONE);
}
notifyDataSetChanged();
}
});
mViewHolder.mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyViewHolder mViewHolder = (MyViewHolder) ((View)v.getParent()).getTag(); //you need to access the convertView that hold this Tag inside
if (mViewHolder.mCancel.getVisibility() == View.VISIBLE) {
mViewHolder.mCancel.setVisibility(View.GONE);
}
mViewHolder.mSubmit.setVisibility(View.GONE);
//mSubmit.setVisibility(View.GONE);
mViewHolder.mEdit.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
});
mViewHolder.mEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mSubmit.setVisibility(View.GONE);
}
});
convertView.setTag(mViewHolder);
break;
}
} else {
mViewHolder = (MyViewHolder) convertView.getTag();
}
//the repopulation:
mViewHolder.TaskName.setText(mListDataChild.get(getGroup(groupPosition)).get(childPosition).getTask().toString());
if (itemType == 1) {
if (mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.off_button);
else if (mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("Yes"))
mViewHolder.segmentImg.setBackgroundResource(R.drawable.on_button);
else
mViewHolder.segmentImg.setBackgroundResource(R.drawable.neutral_button);
if (!mListDataChild.get(getGroup(groupPosition)).get(childPosition).getAnswer().equals("No")) {
mViewHolder.mCommentlayout.setVisibility(View.GONE);
} else {
mViewHolder.mCommentlayout.setVisibility(View.VISIBLE);
mViewHolder.mCancel.setVisibility(View.VISIBLE);
mViewHolder.mSubmit.setVisibility(View.VISIBLE);
}
}
return convertView;
}
}