我正在尝试一种方法,我的适配器如何基于解析数据将背景图像分配给 ListView 中的行中的按钮。我的应用程序所做的是从服务器下载 json 数据。然后它被解析并用于加载一个适配器,该适配器显示一个待办/已完成任务的列表。每个任务旁边都有一个按钮,指示它是否已完成/尚未完成。任何指针都非常感谢。谢谢你。
问问题
732 次
1 回答
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;
}
}
如果您仍然需要这方面的帮助,请告诉我。
于 2013-03-18T09:30:29.880 回答