繁体   English   中英

当我单击RecyclerView项时,我想获取ID

[英]I want to get the id when I click a RecyclerView item

当单击recycleview.i的项目时,我想获取该项目的ID并在Main活动的另一个服务中使用它们,recycleview工作正常,只是想从适配器获取ID并将其用于主要活动,这是我的适配器和main的代码在其中显示

    private void loadrent() {
    l.setVisibility(View.GONE);

    shimmerLayout.setVisibility(View.VISIBLE);
    shimmerLayout.startShimmerAnimation();
    StringRequest stringRequest = new StringRequest(Request.Method.GET, 
                                         URLs.user_rent_data_guest,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        Integer a;
                        shimmerLayout.stopShimmerAnimation();
                        shimmerLayout.setVisibility(View.GONE);
                        //converting the string to json array object
                        JSONObject jsonResponse = new JSONObject(response);
                        JSONArray array =jsonResponse.getJSONArray("data");
                       // JSONArray arrays =jsonResponse.getJSONArray("0");
                        //traversing through all the object
                        if(array != null && array.length() > 0 ) {
                            l.setVisibility(View.INVISIBLE);
                            for (int i = 0; i < array.length(); i++) {
                                //getting product object from json array
                                JSONObject product =array.getJSONObject(i);
                      //JSONObject products =arrays.getJSONObject(i);
                                //adding the product to product lists
                                productList.add(new Rent(
                                        product.getInt("id"),
                                        product.getString("tags"),
                                        product.getString("address"),
                                        product.getString("details"),
                                        product.getString("amount"),
                                        product.getString("cover_image"),
                                        product.getString("location"),
                                        product.getString("contact"),
                                        product.getString("status"),
                                        product.getString("no_of_bedrooms"),
                                        product.getString("no_of_bathrooms"),
                                        product.getString("property_floor"),
                                        product.getString("created_at"),
                                        product.getString("property_name")
                                ));
                            }
                        }
                        else {
                            l.setVisibility(View.VISIBLE);
                            shimmerLayout.stopShimmerAnimation();
                            shimmerLayout.setVisibility(View.GONE);
                        }
                        //creating adapter object and setting it to recyclerview
                        adapter = new rentgestAdapter(SubmitPost.this,productList);
                        recyclerView.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    shimmerLayout.stopShimmerAnimation();
                    shimmerLayout.setVisibility(View.GONE);
                }
            });

    //adding our stringrequest to queue
    Volley.newRequestQueue(this).add(stringRequest);
}



public class rentgestAdapter extends 
RecyclerView.Adapter<rentgestAdapter.rentgestAdapterholder> {


private Context mCtx;
private List<Rent> productList;
private String time,s;
Date currentTimes;
Integer soft;
Date date1,date2;
Date today;

public rentgestAdapter(Context mCtx, List<Rent> productList) {
    this.mCtx = mCtx;
    this.productList = productList;
}

@Override
public rentgestAdapterholder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    View view = inflater.inflate(R.layout.list_layout, null);
    return new rentgestAdapterholder(view);
}


@Override
public void onBindViewHolder(rentgestAdapterholder holder, int position) {
    final Rent product = productList.get(position);


    //loading the image
    //loading the image

    holder.lsItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

     Integer s=product.getId();


        }
    });
    AssetManager am = mCtx.getApplicationContext().getAssets();
    Typeface face= Typeface.createFromAsset(am,"fonts/nobellights.ttf");
    Typeface face1= Typeface.createFromAsset(am,"fonts/NobelBold.ttf");
    holder.textViewamunt.setTypeface(face1);
    holder.name.setTypeface(face);
    holder.textViewtag.setTypeface(face);
    holder.bed.setTypeface(face);
    holder.bath.setTypeface(face);
    holder.floor.setTypeface(face);
    holder.textViewaddress.setTypeface(face);
    holder.textViewdetail.setTypeface(face);


    holder.textViewamunt.setText(String.valueOf(product.getPrice())+" PKR");
    holder.name.setText(product.getname());
    holder.textViewaddress.setText(String.valueOf(product.get_address()));
   // holder.textViewtag.setText(String.valueOf(product.get_sale_tag()));
    if(product.get_sale_tag().equals(""))
    {
        holder.textViewtag.setVisibility(View.INVISIBLE);
    }
    else{
        holder.textViewtag.setVisibility(View.VISIBLE);
        holder.textViewtag.setText(String.valueOf(product.get_sale_tag()));
    }
    holder.textViewdetail.setText(String.valueOf(product.getdetails()));
    if(product.getbed().equals(""))
    {
        holder.bed.setVisibility(View.INVISIBLE);

    }
    else{
        holder.bed.setVisibility(View.VISIBLE);
        holder.bed.setText(String.valueOf(product.getbed())+" Bed");

    }
    if(product.getBath().equals(""))
    {
        holder.bath.setVisibility(View.INVISIBLE);

    }
    else{
        holder.bath.setVisibility(View.VISIBLE);
        holder.bath.setText(String.valueOf(product.getBath())+" Bath");

    }
    if(product.getFloor().equals(""))
    {
        holder.floor.setVisibility(View.INVISIBLE);

    }
    else{
        holder.floor.setVisibility(View.VISIBLE);
        holder.floor.setText(String.valueOf(product.getFloor())+" Floor");

    }
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-M-dd hh:mm:ss");
    try {
        DateFormat dateFormatter = new SimpleDateFormat("yyyy-M-dd hh:mm:ss");
        dateFormatter.setLenient(false);
        today = new Date();
        s = dateFormatter.format(today);
        date1 = simpleDateFormat.parse(product.getcreated_at());
        date2 = simpleDateFormat.parse(s);
        printDifference(date1, date2);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    holder.t.setText(String.valueOf(time));
    holder.shineButton.setOnCheckStateChangeListener(new ShineButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(View view, boolean checked) {
            Log.e("ssssss", "click " + checked);
        }
    });
}

@Override
public int getItemCount() {
    return productList.size();
}
public String printDifference(Date startDate, Date endDate) {
    //milliseconds
    long different = endDate.getTime() - startDate.getTime();

    System.out.println("startDate : " + startDate);
    System.out.println("endDate : "+ endDate);


    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long elapsedDays = different / daysInMilli;
    different = different % daysInMilli;

    long elapsedHours = different / hoursInMilli;
    different = different % hoursInMilli;

    long elapsedMinutes = different / minutesInMilli;
    different = different % minutesInMilli;

    long elapsedSeconds = different / secondsInMilli;

    System.out.printf(
            "%d days, %d hours, %d minutes, %d seconds%n",
            elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
    time= elapsedDays+" Days "+" "+elapsedHours+" Hours  "+" "+elapsedMinutes+" Minutes";
    return time;
}

class rentgestAdapterholder extends RecyclerView.ViewHolder {
   ShineButton shineButton ;

    TextView textViewamunt, textViewdetail, textViewaddress, textViewtag,bed,bath,floor,t,name;
    ImageView imageView;
    public android.support.v7.widget.CardView lsItem;



    public rentgestAdapterholder(View itemView) {
        super(itemView);
        shineButton= (ShineButton) itemView.findViewById(R.id.po_image2);
        textViewamunt = (TextView) itemView.findViewById(R.id.pkramount);
        name = (TextView) itemView.findViewById(R.id.name);
        textViewdetail =  (TextView)itemView.findViewById(R.id.detail);
        t =  (TextView)itemView.findViewById(R.id.t);
        bed = (TextView) itemView.findViewById(R.id.bed);
        bath = (TextView) itemView.findViewById(R.id.bath);
        floor = (TextView) itemView.findViewById(R.id.floor);
        textViewtag = (TextView) itemView.findViewById(R.id.tag);
        textViewaddress = (TextView) itemView.findViewById(R.id.address);
        imageView = (ImageView) itemView.findViewById(R.id.simage);
        lsItem = (android.support.v7.widget.CardView) itemView.findViewById(R.id.lsItem);

    }
}
}

首先:您可以创建一个用于提供回调侦听器的接口:

interface UpdateActivityListener {
    void itemClicked(int id);
}

第二:您的适配器应保留侦听器,但活动应实现:

public rentgestAdapter(Context mCtx, List<Rent> productList, UpdateActivityListener listener) {
    this.mCtx = mCtx;
    this.productList = productList;
    this.listener = listener;
}

第三:设置为视图默认的setOnClickListener并使用传递ID调用您的侦听器。

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // holder.getAdapterPosition() returns click item position
        listener.itemClicked(holder.getAdapterPosition());
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM