mardi 14 juin 2016

How to send data from Adapter into Activity in Android

I want send data from Adapter into Activity, and i write below code but not work me and show this line in LogCat :

06-14 16:15:26.808 20907-20907/com.razemovafaghiat.tellfa.android D/SendData: title : com.razemovafaghiat.tellfa.android.components.tellfa_TextView{6766190 V.ED.... ......I. 0,0-0,0 #7f0c0096 app:id/content_info_title}

Adapter codes:

public class pdf_recycler_adapter extends RecyclerView.Adapter<pdf_recycler_adapter.ViewHolder> {
    private List<DataModel> mDateSet;
    private Context context;

    // Provide a suitable constructor (depends on the kind of dataset)
    public pdf_recycler_adapter(Context context, List<DataModel> dataSet) {
        this.context = context;
        this.mDateSet = dataSet;
    }

    // Create new views (invoked by the layout manager)
    @Override
    public pdf_recycler_adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // create a new view
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.pdf_card_layout, parent, false);

        // create ViewHolder
        return new ViewHolder(view);
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(final ViewHolder viewHolder, int position) {

        // - get data from your itemsData at this position
        // - replace the contents of the view with that itemsData

        viewHolder.pdf_titleText.setText(Html.fromHtml(mDateSet.get(position).getTitle()));

        Glide.with(context)
                .load(mDateSet.get(position).getImage())
                .placeholder(R.drawable.ic_download_image)
                .crossFade()
                .into(viewHolder.pdf_avatarImage);
        Log.d("ImageData", "image : " + mDateSet.get(position).getImage());

        viewHolder.pdf_descText.setText(Html.fromHtml(mDateSet.get(position).getDescription()));
        viewHolder.pdf_descText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = viewHolder.getPosition();
                DataModel model = mDateSet.get(position);
                v.getContext().startActivity(new Intent(v.getContext(), ContentPage.class)
                        .putExtra("title", model.getTitle()));
            }
        });

    }

    // Return the size of your dataset (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return mDateSet.size();
    }

    public void remove(int position) {
        mDateSet.remove(position);
        notifyItemRemoved(position);
    }

    public void clear() {
        mDateSet.clear();
        notifyDataSetChanged();
    }

    public void add(List<DataModel> models) {
        mDateSet.addAll(models);
        notifyDataSetChanged();
    }

    public void update(List<DataModel> models) {
        mDateSet.clear();
        mDateSet.addAll(models);
        notifyDataSetChanged();
    }

    // inner class to hold a reference to each item of RecyclerView
    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView pdf_titleText, pdf_descText;
        public ImageView pdf_avatarImage;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);

            pdf_titleText = (TextView) itemLayoutView.findViewById(R.id.video_card_title);
            pdf_descText = (TextView) itemLayoutView.findViewById(R.id.video_card_content);
            pdf_avatarImage = (ImageView) itemLayoutView.findViewById(R.id.video_card_image);

        }
    }
}

Send data code (in adapter):

viewHolder.pdf_descText.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int position = viewHolder.getPosition();
        DataModel model = mDateSet.get(position);
        v.getContext().startActivity(new Intent(v.getContext(), ContentPage.class)
                .putExtra("title", model.getTitle()));
    }
});

Activity codes:

public class ContentPage extends AppCompatActivity {

    private String title = "";

    private TextView titleText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_page);

        Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle(" ");
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBackPressed();
            }
        });

        //Initialize
        titleText = (TextView) findViewById(R.id.content_info_title);

        //Give Data
        Bundle bundle = getIntent().getExtras();

        if (bundle != null) {
            title = bundle.getString("title");
        }
        if (title != null) {
            titleText.setText(Html.fromHtml(title));
            Log.d("SendData", "title : " + titleText);
        }

How can i solve this problem? thanks all <3

Aucun commentaire:

Enregistrer un commentaire