Chamiko / CNPM

0 stars 0 forks source link

RecycleView #3

Open Chamiko opened 6 years ago

Chamiko commented 6 years ago

public class PersonRecycleViewAdapter extends RecyclerView.Adapter { private ArrayList arrPerson; private Context context; private MyClick myClick;

public PersonRecycleViewAdapter(ArrayList<Person> arrPerson, Context context, MyClick myClick) {
    this.arrPerson = arrPerson;
    this.context = context;
    this.myClick = myClick;
}

public PersonRecycleViewAdapter(ArrayList<Person> arrPerson, Context context) {
    this.arrPerson = arrPerson;
    this.context = context;
}

@Override
public PersonRecycleViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(context).inflate(R.layout.layout_item_grid, parent, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(PersonRecycleViewAdapter.ViewHolder holder, int position) {
    Person person = arrPerson.get(position);
    holder.img.setImageResource(person.getImage());
}

@Override
public int getItemCount() {
    return arrPerson.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    ImageView img;
    public ViewHolder(final View itemView) {
        super(itemView);
        img = itemView.findViewById(R.id.img_item);
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myClick.onItemClick(getAdapterPosition(), itemView);
            }
        });
        img.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                myClick.onItemLongClick(getAdapterPosition(), itemView);

                return true;
            }
        });
    }
}

}


public interface MyClick { public void onItemClick(int position, View view); public void onItemLongClick(int position, View view); }


public class ShowActivity extends AppCompatActivity implements MyClick { private ImageView img; private TextView tvName, tvPhone; private RecyclerView gvPerson; private ArrayList arrPerson; private PersonRecycleViewAdapter adapter;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show);
    initViews();
}

private void initViews() {
    img = (ImageView) findViewById(R.id.img_person);
    tvName = (TextView) findViewById(R.id.tv_name);
    tvPhone = (TextView) findViewById(R.id.tv_phone);
    gvPerson = (RecyclerView) findViewById(R.id.gv_person);
    Intent intent = getIntent();
    arrPerson = new ArrayList<>();
    if(intent != null){
        int position = intent.getExtras().getInt("index");
        arrPerson = (ArrayList<Person>) intent.getSerializableExtra("list");
        Person person = arrPerson.get(position);
        img.setImageResource(person.getImage());
        tvName.setText(person.getName());
        tvPhone.setText(person.getPhone());
    }
    adapter = new PersonRecycleViewAdapter(arrPerson, ShowActivity.this, this);
    LinearLayoutManager layoutManager= new LinearLayoutManager(ShowActivity.this, LinearLayoutManager.HORIZONTAL, false);
    gvPerson.setLayoutManager(layoutManager);
    gvPerson.setAdapter(adapter);

}

@Override
public void onItemClick(int position, View view) {
    img.setImageResource(arrPerson.get(position).getImage());
    tvName.setText(arrPerson.get(position).getName());
    tvPhone.setText(arrPerson.get(position).getPhone());
}

@Override
public void onItemLongClick(int position, View view) {
    Toast.makeText(this, arrPerson.get(position).getName(), Toast.LENGTH_SHORT).show();
}

}___ public class MainActivity extends AppCompatActivity { private ArrayList display; private ListView lvPerson; private ArrayList arrPerson; private PersonAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    display = new ArrayList<>();
    display.add("list");
    display.add("grid");

    lvPerson = (ListView) findViewById(R.id.lv_person);
    arrPerson = new ArrayList<>();
    addArray();
    adapter = new PersonAdapter(arrPerson, this);
    lvPerson.setAdapter(adapter);
    lvPerson.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(MainActivity.this, ShowActivity.class);
            Bundle bundle = new Bundle();
            bundle.putInt("index", position);
            bundle.putSerializable("list", arrPerson);
            intent.putExtras(bundle);
            startActivity(intent);
        }
    });

}