0

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

4

1 回答 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 回答