![](/img/trans.png)
[英]How to handle Android ListView's item click for button and a specific area ?
[英]How to update a button's text in each listview's item ?(Android)
我想创建一个列表视图,它的内容如下:我无法发布图片,对不起。 这是图像:
单击下载按钮,它将下载文件,而我想要做的是,下载完成后,它想要将按钮的文本设置为“使用”。 请帮助,我不知道要这样做。 这是我的适配器:
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;
}
}
我有一个处理程序,可以在下载完成后处理该消息。
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;
}
}
};
我来自中国 。 对不起我的英语。谢谢您的帮助。
将下载的项目保持在List
中的某个位置,并在完成下载功能后,调用adapter.notifyDataSetChanged()
以重新加载适配器视图。 在此,通过检查列表中的下载位置来设置按钮标题。
将变量添加到SaveModel
来存储此状态。 下载完成后,更改列表项中的值,然后调用notifySetDataChanged()
。 在SaveListAdapter
,使用此值的功能设置按钮文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.