JSON对象的适配器

我从API以JSON格式获取数据,并且有id和url。现在,我需要为显示的每个图像创建一个“添加到收藏夹”按钮。尝试设置adapter.setListener(this);时,出现错误,因为我无法使用字符串格式。

我该如何解决此问题?我花了5个小时来解决这个问题:(

Mainactivity:

protected void onCreate(Bundle savedInstanceState) {

    getWindow().setflags(WindowManager.LayoutParams.flaG_FULLSCREEN,WindowManager.LayoutParams.flaG_FULLSCREEN);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = findViewById(R.id.listItem);
    favorites = findViewById(R.id.buttonFav);
    catDetailsArrayList = new ArrayList<>();
    myAdapter = new MyAdapter(Mainactivity.this,catDetailsArrayList);
    searchbtn = findViewById(R.id.buttonSearch);

    searchbtn.setOnClicklistener(new View.OnClicklistener() {
        @Override
        public void onClick(View view) {
            catDetailsArrayList.clear();
            myAdapter.notifyDataSetChanged();
            displayCats();
        }
    });


    });


}

private void displayCats() {
    RequestQueue requestQueue = Volley.newRequestQueue(getapplicationContext());


    StringRequest stringRequest = new StringRequest(Request.Method.GET,url,new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            try{

                JSONArray jsonArray = new JSONArray(response);

                for(int i=0; i<jsonArray.length(); i++){
                    JSONObject jsonObject1 = jsonArray.getJSONObject(i);

                    String jsonCatUrl2 = jsonObject1.getString("url");
                    String jsonCatId2 = jsonObject1.getString("id");

                    CatDetails catDetails = new CatDetails();

                    catDetails.setUrl(jsonCatUrl2);
                    catDetails.setId(jsonCatId2);

                    catDetailsArrayList.add(catDetails);

                }
                listView.setadapter(myAdapter);
                myAdapter.notifyDataSetChanged();


            } catch(JSONException e){
                e.printStackTrace();
            }


        }
    },new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getapplicationContext(),error.getMessage(),Toast.LENGTH_LONG).show();
        }
    });


    requestQueue.add(stringRequest);
}

MyAdapter:

public class MyAdapter extends BaseAdapter {


public activity activity;
public ArrayList<CatDetails> catDetailsArrayList;
public LayoutInflater inflater;

Button btn;
TextView idnr;


public MyAdapter(activity activity,ArrayList<CatDetails> catDetailsArrayList) {
    this.activity = activity;
    this.catDetailsArrayList = catDetailsArrayList;
}

@Override
public Object getItem(int position) {
    return catDetailsArrayList.get(position);
}


@Override
public long getItemId(int position) {
    return (long)position;
}

@Override
public View getView(int position,View convertView,ViewGroup viewGroup) {
    if (inflater == null) {
        inflater = this.activity.getLayoutInflater();
    }


    if (convertView == null) {
        convertView = inflater.inflate(R.layout.list_item,null);
    }

    ImageView imageView = convertView.findViewById(R.id.ImageView);
    final CatDetails catDetails = this.catDetailsArrayList.get(position);
    Picasso.get().load(catDetails.getUrl()).into(imageView);
    idnr =convertView.findViewById(R.id.textView);
    btn = convertView.findViewById(R.id.buttonFav);
    final String id = catDetails.getId();
    idnr.setText(catDetails.getId());
    return convertView;
}

@Override
public int getcount() {
    return this.catDetailsArrayList.size();
}

我显示我从服务器收到的每个项目的ID,没关系,但是我不知道如何将“添加到收藏夹”按钮设置为正常。它必须接收参数id(我从服务器收到的)作为参数,但id为字符串格式。

zhaoyp2222 回答:JSON对象的适配器

 final String id = catDetails.getId();

将其更改为

final String id = Integer.toString(catDetails.getId());
本文链接:https://www.f2er.com/3169969.html

大家都在问