Re: [android-developers] Re: Recycler view with important marking star view problem

2017-01-05 Thread Marina Cuello
I don't really understand the structure of the views you're using.
But, anyway, the idea behind a "RecyclerView" is that it recycles and
reuses the views that are part of the list. It uses a "limited" pool of
inflated views, and "binds" them to the data that's needed on the screen.
So, if you click a star, and change the image to "filled", when that view
is reused, it will still be "filled". You need to choose the image on
the onBindViewHolder,
not only on the onClick for the star.

Marina

PS:  If you use "Search_Result_Adapter extends RecyclerView.Adapter<
ChildViewHolder>" you can save yourself all the casts to ChildViewHolder on
the whole adapter.


On Fri, Dec 30, 2016 at 11:24 PM, Jagapathi Chowdary <
gondhijagapa...@gmail.com> wrote:

> this is my code
>
>
> import android.Manifest;
> import android.app.Activity;
> import android.content.Intent;
> import android.content.pm.PackageManager;
> import android.net.Uri;
> import android.os.Build;
> import android.support.v4.app.ActivityCompat;
> import android.support.v7.widget.RecyclerView;
> import android.view.LayoutInflater;
> import android.view.View;
> import android.view.ViewGroup;
> import android.widget.ImageView;
> import android.widget.LinearLayout;
> import android.widget.TextView;
> import android.widget.Toast;
>
> import java.util.ArrayList;
>
> /**
>  * Created by PPS on 4/2/2016.
>  */
> public class Search_Result_Adapter extends 
> RecyclerView.Adapter
> {
> private final int HEADER = 0;
> private final int CHILD = 1;
> final private int REQUEST_CODE_ASK_PERMISSION = 123;
> Activity activity;
> private ArrayList star_check = new ArrayList();
> private ArrayList user_id_list = new ArrayList();
> private ArrayList data;
> private int click_position, star = 0;
> private Intent callIntent;
>
> public Search_Result_Adapter(Activity activity, ArrayList
> data) {
> this.activity = activity;
> this.data = data;
> }
>
> @Override
> public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,
> int viewType) {
>
> RecyclerView.ViewHolder holder = null;
> ArrayList save_value = new ArrayList<>();
> save_value.add("0");
> DataHold.getInstance().setUser_list(save_value);
>
> LayoutInflater inflater = LayoutInflater.from(parent.
> getContext());
> switch (viewType) {
> case HEADER:
> View v_parent = 
> inflater.inflate(R.layout.search_parent_result,
> parent, false);
> holder = new ParentViewHolder(v_parent);
>
> break;
> case CHILD:
> View v_child = inflater.inflate(R.layout.search_child_result,
> parent, false);
> holder = new ChildViewHolder(v_child);
> break;
>
> default:
> View v_parent1 = 
> inflater.inflate(R.layout.search_parent_result,
> parent, false);
> holder = new ParentViewHolder(v_parent1);
> //Toast.makeText(activity.getApplicationContext(), "" +
> data.size(), Toast.LENGTH_SHORT).show();
> break;
> }
> return holder;
> }
>
> @Override
> public void onBindViewHolder(final RecyclerView.ViewHolder holder,
> final int position) {
>
> if (holder.getItemViewType() == HEADER) {
> Search_Header_Model headermodel = (Search_Header_Model)
> data.get(position);
> ((ParentViewHolder) holder).address.setText(
> headermodel.getAddress());
> //Toast.makeText(activity.getApplicationContext(), "Header:
> "+headermodel.getAddress(), Toast.LENGTH_SHORT).show();
> } else if (holder.getItemViewType() == CHILD) {
> final Search_Child_Model child_model = (Search_Child_Model)
> data.get(position);
> ((ChildViewHolder) holder).row1.setText(child_
> model.getRow1());
> ((ChildViewHolder) holder).row2.setText(child_
> model.getRow2());
> ((ChildViewHolder) holder).row3.setText(child_
> model.getRow3());
> ((ChildViewHolder) holder).row4.setText(child_
> model.getRow4());
> ((ChildViewHolder) holder).row5.setText(child_
> model.getRow5());
> ((ChildViewHolder) holder).image2.setOnClickListener(new
> View.OnClickListener() {
> @Override
> public void onClick(View view) {
>
> if 
> (star_check.contains(((ChildViewHolder)holder).getAdapterPosition()))
> {
> for (int i = 0; i < star_check.size(); i++) {
> if (star_check.get(i) ==
> ((ChildViewHolder)holder).getAdapterPosition()) {
> star_check.remove(i);
> ((ChildViewHolder) holder).image2.
> setImageResource(R.mipmap.single_blank);
> }
> }
> updateUserList();
> }
>

[android-developers] Re: Recycler view with important marking star view problem

2016-12-30 Thread Jagapathi Chowdary
this is my code 


import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

/**
 * Created by PPS on 4/2/2016.
 */
public class Search_Result_Adapter extends 
RecyclerView.Adapter {
private final int HEADER = 0;
private final int CHILD = 1;
final private int REQUEST_CODE_ASK_PERMISSION = 123;
Activity activity;
private ArrayList star_check = new ArrayList();
private ArrayList user_id_list = new ArrayList();
private ArrayList data;
private int click_position, star = 0;
private Intent callIntent;

public Search_Result_Adapter(Activity activity, ArrayList data) 
{
this.activity = activity;
this.data = data;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int 
viewType) {

RecyclerView.ViewHolder holder = null;
ArrayList save_value = new ArrayList<>();
save_value.add("0");
DataHold.getInstance().setUser_list(save_value);

LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case HEADER:
View v_parent = 
inflater.inflate(R.layout.search_parent_result, parent, false);
holder = new ParentViewHolder(v_parent);

break;
case CHILD:
View v_child = 
inflater.inflate(R.layout.search_child_result, parent, false);
holder = new ChildViewHolder(v_child);
break;

default:
View v_parent1 = 
inflater.inflate(R.layout.search_parent_result, parent, false);
holder = new ParentViewHolder(v_parent1);
//Toast.makeText(activity.getApplicationContext(), "" + 
data.size(), Toast.LENGTH_SHORT).show();
break;
}
return holder;
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, 
final int position) {

if (holder.getItemViewType() == HEADER) {
Search_Header_Model headermodel = (Search_Header_Model) 
data.get(position);
((ParentViewHolder) 
holder).address.setText(headermodel.getAddress());
//Toast.makeText(activity.getApplicationContext(), "Header: 
"+headermodel.getAddress(), Toast.LENGTH_SHORT).show();
} else if (holder.getItemViewType() == CHILD) {
final Search_Child_Model child_model = (Search_Child_Model) 
data.get(position);
((ChildViewHolder) holder).row1.setText(child_model.getRow1());
((ChildViewHolder) holder).row2.setText(child_model.getRow2());
((ChildViewHolder) holder).row3.setText(child_model.getRow3());
((ChildViewHolder) holder).row4.setText(child_model.getRow4());
((ChildViewHolder) holder).row5.setText(child_model.getRow5());
((ChildViewHolder) holder).image2.setOnClickListener(new 
View.OnClickListener() {
@Override
public void onClick(View view) {

if 
(star_check.contains(((ChildViewHolder)holder).getAdapterPosition())) {
for (int i = 0; i < star_check.size(); i++) {
if (star_check.get(i) == 
((ChildViewHolder)holder).getAdapterPosition()) {
star_check.remove(i);
((ChildViewHolder) 
holder).image2.setImageResource(R.mipmap.single_blank);
}
}
updateUserList();
}
else {
((ChildViewHolder) 
holder).image2.setImageResource(R.mipmap.single_filed);

star_check.add(((ChildViewHolder)holder).getAdapterPosition());

updateUserList();
}
}

private void updateUserList() {
DataHold.getInstance().setSave_check("0");

user_id_list.add(child_model.getUser_id());
DataHold.getInstance().setUser_list(user_id_list);
}
});
((ChildViewHolder) holder).row1.setOnClickListener(new 
View.OnClickListener() {
@Override
public void onClick(View v) {

click_position = position;
final Search_Child_Model child_model_click = 
(Search_Child_Model) data.get(click_position);

Dialog_Screen_row dsc = new Dialog_Screen_row(activity,