适配器如何为Android中的按钮分配背景图像?

时间:2013-03-18 09:19:47

标签: android listview button adapter

我试图想一个基于解析数据的适配器如何将背景图像分配给ListView中的行中的按钮的方式。 我的应用程序所做的是从服务器下载json数据。然后它被解析并用于加载适配器,该适配器显示待执行/完成任务的列表。每个任务旁边都有一个按钮,指示是否已经完成。任何指针都非常赞赏。谢谢。

1 个答案:

答案 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;
    }
}

如果您仍需要帮助,请与我联系。