16

編集:申し訳ありませんが、あなたのコメントから、私の質問が十分に明確ではなかったことがわかりました。新しいものを投稿します。これについては申し訳ありませんが、あなたの答えに感謝します

Json ファイルから ListView を作成しています。

listadapterを使用すると、適切な json データをリストの各行に簡単に割り当てることができます。これは、たとえば次のようなテキストに適しています。

TextView tv = (TextView)ll.findViewById(R.id.descView);   
tv.setText(i.desc);

上記のコードでは、適切な json データがすべての行に正しく入力されます。

ただし、画像に対して同じことを行うことはできません。これを使用して、jsonデータから正しい画像を設定しようとしました:

ImageView iv = (ImageView)ll.findViewById(R.id.imgView);           
iv.setBackgroundDrawable(context.getResources().getDrawable(i.img));

パラメータのタイプに何か問題があると思います。「setBackgroundDrawable」には描画可能なパラメータが必要です。「getDrawable」には int が必要です。フィールド img のタイプを int に設定しましたが、うまくいきません。

理由はありますか?

マイリストアダプター

public class adapter extends ArrayAdapter<ListItems> {

int resource;
String response;
Context context;

//Initialize adapter
public ListItemsAdapter(Context context, int resource, List<ListItems> items) {
    super(context, resource, items);
    this.resource=resource; 
}     

@Override
public View getView(int position, View convertView, ViewGroup parent)
{

    //Get the current object
    ListItems i = getItem(position);

    //Inflate the view
    if(convertView==null)
    {
        ll = new LinearLayout(getContext());
        String inflater = Context.LAYOUT_INFLATER_SERVICE;
        LayoutInflater li;
        li = (LayoutInflater)getContext().getSystemService(inflater);
        li.inflate(resource, ll, true);
    }
    else
    {
        ll = (LinearLayout) convertView;
    }

    //For the message
    TextView tv = (TextView)ll.findViewById(R.id.descView);
    tv.setText(i.desc);

// For the Img
    ImageView iv = (ImageView)ll.findViewById(R.id.imgView);
    iv.setBackgroundDrawable(context.getResources().getDrawable(i.img));

    return ll;
}

私のアイテムクラス:

    public class ListItems{
int id;
int img;    
String desc;}

そして、私のjsonファイルのサンプル:

    [{"id":10001,"img":e1,"desc":"desc1"},
    {"id":10002,"img":e2,"desc":"desc2"},
    {"id":10003,"img":e3,"desc":"desc3"}]
4

4 に答える 4