[英]How to update a button's text in each listview's item ?(Android)
I want to create a listview and it's item like this: I can not post images, i am sorry . 我想创建一个列表视图,它的内容如下:我无法发布图片,对不起。 This is the image :
这是图像:
https://lh3.googleusercontent.com/-tQ0Uh8-YhkE/U6Qsz9Y0FAI/AAAAAAAADPc/dDerCtq_6jQ/w487-h865-no/Screenshot_2014-06-20-20-40-07.png https://lh3.googleusercontent.com/-tQ0Uh8-YhkE/U6Qsz9Y0FAI/AAAAAAAADPc/dDerCtq_6jQ/w487-h865-no/Screenshot_2014-06-20-20-40-07.png
click the download button it will download the file ,and what i want to do is ,when the download completed , it want to set the button's text to "Use It". 单击下载按钮,它将下载文件,而我想要做的是,下载完成后,它想要将按钮的文本设置为“使用”。 Please help , i have no idea to do that.
请帮助,我不知道要这样做。 This is my Adapter :
这是我的适配器:
class SaveListAdapter extends BaseAdapter {
private List<SaveModel> savesList;
private Context context;
public SaveListAdapter(Context context) {
this.context = context;
}
public void addItem(SaveModel model) {
if (null != savesList && !savesList.contains(model)) {
this.savesList.add(savesList.size(), model);
} else if (null == savesList) {
this.savesList = new ArrayList<SaveModel>();
this.savesList.add(model);
}
}
public void addItems(List<SaveModel> modelList) {
if (null != savesList) {
Iterator<SaveModel> listIterator = modelList.iterator();
while (listIterator.hasNext()) {
SaveModel model = listIterator.next();
addItem(model);
}
} else {
this.savesList = modelList;
}
}
@Override
public int getCount() {
if (null != savesList) {
return savesList.size();
} else
return 0;
}
public void removeAllItems() {
if (null != this.savesList) {
this.savesList.clear();
}
}
@Override
public SaveModel getItem(int position) {
if (null != savesList)
return savesList.get(position);
else
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
final SaveModel model = savesList.get(position);
final ViewHolder viewHolder;
if (null == convertView) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(
R.layout.item_card, null);
viewHolder.gamePicIMG = (ImageView) convertView
.findViewById(R.id.item_card_save_pic_Image);
viewHolder.saveTitleTV = (TextView) convertView
.findViewById(R.id.item_card_save_title_TV);
viewHolder.saveDownloadBtn = (Button) convertView
.findViewById(R.id.item_card_save_download_Btn);
viewHolder.saveDescTV = (TextView) convertView
.findViewById(R.id.item_card_save_desc_TV);
viewHolder.saveAuthorTV = (TextView) convertView
.findViewById(R.id.item_card_save_author_TV);
viewHolder.saveUpdateTimeTV = (TextView) convertView
.findViewById(R.id.item_card_save_update_time_TV);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (!TextUtils.isEmpty(model.getSaveTitle())) {
viewHolder.saveTitleTV.setText(model.getSaveTitle());
} else {
viewHolder.saveTitleTV.setText("UnKonw");
}
viewHolder.saveDescTV.setText("Description:\n" + model.getSaveDesc());
if (!TextUtils.isEmpty(model.getSaveAuthor())) {
viewHolder.saveAuthorTV.setText(model.getSaveAuthor());
} else {
viewHolder.saveAuthorTV.setText("Someone");
}
viewHolder.saveUpdateTimeTV.setText("Sometime");
viewHolder.saveDownloadBtn.setText("Download ");
viewHolder.saveDownloadBtn
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog("Download", "Downloading...");
Message msg = new Message();
msg.what=Constants.MSG_DOWNLOAD_COMPLETE;
handler.sendMessageDelayed(msg, 5000);
}
});
return convertView;
}
private class ViewHolder {
private ImageView gamePicIMG;
private TextView saveTitleTV;
private Button saveDownloadBtn;
private TextView saveDescTV;
private TextView saveAuthorTV;
private TextView saveUpdateTimeTV;
}
}
and i have a Handler to handler the message when download complete. 我有一个处理程序,可以在下载完成后处理该消息。
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case Constants.MSG_DOWNLOAD_COMPLETE:
if(null!=dialog){
dialog.dismiss();
}
//TODO 怎么更新点击的按个按钮状态为“使用” how could i set "Use It" to the button which i clicked.
break;
}
}
};
I am from China . 我来自中国 。 I'm sorry for my English.Please help ,thanks.
对不起我的英语。谢谢您的帮助。
Keep the downloaded items positions some where in a List
and after finishing the download functionality, call adapter.notifyDataSetChanged()
to reload the adapter view. 将下载的项目保持在
List
中的某个位置,并在完成下载功能后,调用adapter.notifyDataSetChanged()
以重新加载适配器视图。 in this, set button title by checking the downloaded positions in the list. 在此,通过检查列表中的下载位置来设置按钮标题。
Add a variable to your SaveModel
to store this state. 将变量添加到
SaveModel
来存储此状态。 When the download finish, change the value in the item of the list and call notifySetDataChanged()
. 下载完成后,更改列表项中的值,然后调用
notifySetDataChanged()
。 In the SaveListAdapter
, set the button text in function of this value. 在
SaveListAdapter
,使用此值的功能设置按钮文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.