如何在textview中的listview行更改android中的文本?
我开发listview在自定义行created.but我使用列表按钮单击打开警报对话框和选定的单选按钮,然后对话框关闭,我打电话更新功能,但如何更改行文本。我的代码是below.please给我的解决方案并保存状态全部行。如何在textview中的listview行更改android中的文本?
public class AlMessagesAdapter extends ArrayAdapter<DtoAllMessages> {
private LayoutInflater inflator;
private ArrayList<DtoAllMessages> userlist;
public AlMessagesAdapter(Activity context,
ArrayList<DtoAllMessages> list) {
super(context, R.layout.custom_list, list);
this.userlist = list;
inflator = context.getLayoutInflater();
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = inflator.inflate(R.layout.custom_list, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.tvName);
holder.date_cr = (TextView) convertView
.findViewById(R.id.tvDate);
holder.img = (ImageView) convertView.findViewById(R.id.ivIcon);
holder.tokenBtn = (TextView) convertView
.findViewById(R.id.tokenBtn);
convertView.setTag(holder);
convertView.setTag(R.id.tvName, holder.title);
convertView.setTag(R.id.tvDate, holder.date_cr);
convertView.setTag(R.id.ivIcon, holder.img);
convertView.setTag(R.id.tokenBtn, holder.tokenBtn);
} else {
holder = (ViewHolder) convertView.getTag();
}
token = userlist.get(position).getToken();
token = token.substring(0, token.length() - 3);
holder.title.setText(userlist.get(position).getName() + "(" + token
+ ")");
String type_data = userlist.get(position).getType().toString();
if ((type_data.equals("text")) || (type_data.equals("photo"))) {
holder.date_cr.setText(userlist.get(position).getType()
+ ":Received "
+ userlist.get(position).getCreated_date());
holder.tokenBtn.setVisibility(View.VISIBLE);
list.setItemsCanFocus(true);
} else if (type_data.equals("out")) {
holder.date_cr.setText(userlist.get(position).getType()
+ ":Sent " + userlist.get(position).getCreated_date());
holder.tokenBtn.setVisibility(View.GONE);
}
if (type_data.equals("text")) {
holder.img.setBackgroundResource(R.drawable.chatmessage);
} else if (type_data.equals("photo")) {
holder.img.setBackgroundResource(R.drawable.photomessage);
} else if (type_data.equals("out")) {
holder.img.setBackgroundResource(R.drawable.outmessafe);
}
if (position % 2 == 0) {
convertView.setBackgroundResource(R.drawable.whitebackground);
} else {
convertView.setBackgroundResource(R.drawable.greybackground);
}
holder.tokenBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertBoxShow(position);
}
});
return convertView;
}
class ViewHolder {
protected ImageView img;
protected TextView date_cr;
protected TextView title;
protected TextView tokenBtn;
}
}
和holder.tokenButton然后双击打开下面的alertdialog箱incode ::
public void AlertBoxShow(int position) {
final int pos=position;
Log.v("log_tag"," position ::"+pos);
final CharSequence[] items = { " 5 ", " 10 ", " 15 "};
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
alt_bld.setSingleChoiceItems(items, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
updateStatus(pos,5);
dialog.dismiss();
// Your code when first option seletced
break;
case 1:
updateStatus(pos,10);
// Your code when 2nd option seletced
dialog.dismiss();
break;
case 2:
updateStatus(pos,15);
dialog.dismiss();
// Your code when 3rd option seletced
break;
}
}
});
AlertDialog alert = alt_bld.create();
alert.show();
}
,并呼吁updatestatus功能我想holder.title的setText,然后刷新列表行如何possible.and我的更新状态功能在下面。
private void updateStatus(int index, int radioSelectValue) {
holder.title.setText(userlist.get(index).getName() + "(" + token
+ ")");
}
您可以使用setTag()
和getTag()
让行项目点击的位置,
下面是setTag()
convertView.setTag(R.id.tokenBtn, postion);
然后getTag()
内holder.tokenBtn
onClick()
int pos = (Integer)v.getTag(R.id.tokenBtn);
TextView txtview = (TextView)v.getTag(R.id.tvName); // use this TextView
to update the value.
AlertBoxShow(pos);
感谢您的回复,但updateStatus功能如何设置holder.title。 – crickpatel0024 2013-05-10 07:53:10
更新了我的答案。 – 2013-05-10 08:00:43
int pos =(Integer)v.getTag(R.id.tokenBtn);我在onclick事件中使用这一行,然后崩溃的应用程序和错误获取空指针异常。 – crickpatel0024 2013-05-10 08:06:44
据我了解你的问题,我认为你正在尝试更新列表项的数据根据用户在提示框中的选择。如果是,则更改适配器中的基础数据。不要尝试在适配器之外更新您的textview。只是尝试更新数据,然后在适配器上调用notifyDataSetChanged()方法。而已。
如何试着更新数据? – crickpatel0024 2013-05-10 09:51:47
你有没有试过检查你的列表位置是否正确?尝试向下滚动并再次检查位置......这也可能是因为在列表视图 – Cjames 2013-05-10 08:33:37
ya正确重用poaition得到它。 – crickpatel0024 2013-05-10 08:45:40