In a listview I'm adding and removing list's row(items) dynamically on button clicks, in a single list row(items) there are two edittexts, I've tried so hard to get both editext's value in custom listview with pojo class, but not able to do so, even not getting all edittext's value, wisely.
Please help me out, thanks in advance!
private class NewCoachExerienceEditAdapter extends BaseAdapter {
@Override
public int getCount() {
if (newCoachProExpArrList != null) {
return newCoachProExpArrList.size();
} else {
return 0;
}
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView( final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = UserEditProfileCoachActivity.this.getLayoutInflater();
convertView = inflater.inflate(R.layout.new_edit_pro_exp_row, null);
holder.et_coach_edit_pro_exp_academy_name = (EditText) convertView.findViewById(R.id.et_coach_edit_pro_exp_academy_name);
holder.et_edit_coach_pro_exp_comments = (EditText) convertView.findViewById(R.id.et_edit_coach_pro_exp_comments);
holder.iv_edit_coach_pro_exp_add = (ImageView) convertView.findViewById(R.id.iv_edit_coach_pro_exp_add);
holder.iv_edit_coach_pro_exp_remove = (ImageView) convertView.findViewById(R.id.iv_edit_coach_pro_exp_remove);
holder.ll_coach_edit_pro_exp_from = (LinearLayout) convertView.findViewById(R.id.ll_coach_edit_pro_exp_from);
holder.ll_coach_edit_pro_exp_to = (LinearLayout) convertView.findViewById(R.id.ll_coach_edit_pro_exp_to);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
newCoachProExperienceItem = newCoachProExpArrList.get(position);
holder.ref = position;
tv_edit_coach_edit_pro_exp_from = (TextView) convertView.findViewById(R.id.tv_edit_coach_edit_pro_exp_from);
tv_edit_coach_edit_pro_exp_to = (TextView) convertView.findViewById(R.id.tv_edit_coach_edit_pro_exp_to);
holder.et_coach_edit_pro_exp_academy_name.setText(newCoachProExperienceItem.getCoach_exp_academy_str());
holder.et_edit_coach_pro_exp_comments.setText(newCoachProExperienceItem.getCoach_exp_coach_comment_str());
holder.iv_edit_coach_pro_exp_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
newCoachProExperienceItem = new NewCoachProExperienceItem();
newCoachProExpArrList.add(newCoachProExperienceItem);
notifyDataSetChanged();
}
});
holder.iv_edit_coach_pro_exp_remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
newCoachProExpArrList.remove(position);
notifyDataSetChanged();
}
});
holder.et_coach_edit_pro_exp_academy_name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
newCoachProExpArrList.get(position).setCoach_exp_academy_str(arg0.toString());
Log.e(position + " : ", arg0.toString());
}
});
return convertView;
}
}
private class ViewHolder {
EditText et_edit_coach_pro_exp_comments, et_coach_edit_pro_exp_academy_name;
ImageView iv_edit_coach_pro_exp_add, iv_edit_coach_pro_exp_remove;
LinearLayout ll_coach_edit_pro_exp_from, ll_coach_edit_pro_exp_to;
int ref;
}
I've already tried these both but didn't get any solution.
for(int i=0; i
Log.e("newCoachProExpArrList.size()", newCoachProExpArrList.size() + "" );
Log.e("test_arr_list.size()", test_arr_list.size() + "" );
for(int ce = 0; ce < newCoachProExpArrList.size(); ce++){
Log.e(ce + " test_arr_list" , test_arr_list.get(ce));
Log.e(ce + "" , newCoachProExpArrList.get(ce).getCoach_exp_academy_str());
}
I think problem in ViewHolder. If you want add or remove items you may generate item layout vis all visible views that you need than register all views in view holder and for example if you must remove some view on button click do viewHolder.someView.setVisibility(View.GONE); or show it viewHolder.someView.setVisibility(View.VISIBLE); but i dont think that it is the best solution.