0

解析データに基づいて、アダプターがListView内の行に配置されたボタンに背景画像を割り当てる方法を考えようとしています。私のアプリは、サーバーからjsonデータをダウンロードします。次に、それが解析され、アダプターをロードするために使用されます。アダプターは、to-do/doneタスクのリストを表示します。すべてのタスクの横には、実行されたかどうかを示すボタンがあります。どんなポインタでも大歓迎です。ありがとうございました。

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 に答える