在列表视图中动态编辑文本add/remove
Edittext add/remove dynamically in listview
在列表视图中,我在单击按钮时动态添加和删除列表的行(项目),在单个列表行(项目)中有两个编辑文本,我已经非常努力地在自定义中获得两个编辑文本的值带有 pojo class 的列表视图,但无法这样做,即使没有获得所有 edittext 的值,明智的。
请帮帮我,在此先感谢!
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;
}
我已经尝试了这两个,但没有得到任何解决方案。
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());
}
我认为 ViewHolder 有问题。如果你想添加或删除项目,你可以针对你需要的所有可见视图生成项目布局,而不是在视图持有者中注册所有视图,例如,如果你必须在按钮上删除一些视图,请单击 viewHolder.someView.setVisibility(View.GONE );或者显示 viewHolder.someView.setVisibility(View.VISIBLE);但我认为这不是最好的解决方案。
我有两个选择,不是我所需要的,总之如下两件事:首先打开一个弹出窗口 window 然后添加新行并通知适配器,其次是增加的大小动态列表视图。
在列表视图中,我在单击按钮时动态添加和删除列表的行(项目),在单个列表行(项目)中有两个编辑文本,我已经非常努力地在自定义中获得两个编辑文本的值带有 pojo class 的列表视图,但无法这样做,即使没有获得所有 edittext 的值,明智的。
请帮帮我,在此先感谢!
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;
}
我已经尝试了这两个,但没有得到任何解决方案。
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());
}
我认为 ViewHolder 有问题。如果你想添加或删除项目,你可以针对你需要的所有可见视图生成项目布局,而不是在视图持有者中注册所有视图,例如,如果你必须在按钮上删除一些视图,请单击 viewHolder.someView.setVisibility(View.GONE );或者显示 viewHolder.someView.setVisibility(View.VISIBLE);但我认为这不是最好的解决方案。
我有两个选择,不是我所需要的,总之如下两件事:首先打开一个弹出窗口 window 然后添加新行并通知适配器,其次是增加的大小动态列表视图。