我试图想一个基于解析数据的适配器如何将背景图像分配给ListView中的行中的按钮的方式。 我的应用程序所做的是从服务器下载json数据。然后它被解析并用于加载适配器,该适配器显示待执行/完成任务的列表。每个任务旁边都有一个按钮,指示是否已经完成。任何指针都非常赞赏。谢谢。
答案 0 :(得分:1)
假设您知道如何获取和解析json数据,使用包含所需文本和图像的项目布局创建列表视图,请使用以下异常来创建自定义适配器。
在getView(...)
中创建每个视图期间,将所需的图像传递到适配器运行时。
每次刷新适配器数据时,请调用adapter.notifyDataSetChanged();
public class MyAdapter extends ArrayAdapter<Item> {
private ArrayList<Item> items;
private ViewHolder Holder;
private class ViewHolder {
TextView title, cost;
Button delete;
}
public MyAdapter(Context context, int tvResId, ArrayList<Item> items) {
super(context, tvResId, items);
this.items = items;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.cost_estimate_list_item, null);
Holder = new ViewHolder();
Holder.title = (TextView) v.findViewById(R.id.tvCEListText);
Holder.cost = (TextView) v.findViewById(R.id.tvCEListPrice);
Holder.delete = (Button) v.findViewById(R.id.bCEListDelBtn);
v.setTag(Holder);
} else
Holder = (ViewHolder) v.getTag();
final Item item = items.get(pos);
if (item != null) {
Holder.title.setText(item.getTitle());
Holder.cost.setText("Rs." + item.getPrice());
}
Holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
items.remove(item);
notifyDataSetChanged();
updateTotal();
}
});
return v;
}
}
class Item {
private String title, price;
public String getTitle() {
return title;
}
public String getPrice() {
return price;
}
public Item(String t, String p) {
title = t;
price = p;
}
}
如果您仍需要帮助,请与我联系。