I want to create a listview and it's item like this: I can not post images, i am sorry . This is the image :
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.