RecyclerView с Piccaso - PullRequest
       15

RecyclerView с Piccaso

0 голосов
/ 11 ноября 2018

Нужна помощь, чтобы понять, что я делаю не так с этим кодом. Я стою и был на нем некоторое время. Этот пример начался отсюда.

Простой пример сетки Android с использованием RecyclerView с GridLayoutManager (как старый GridView)

Gradle

    implementation 'com.squareup.picasso:picasso:2.71828'

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/rvNumbers"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"/>

</android.support.constraint.ConstraintLayout>

recyclerview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:padding="5dp"
android:layout_width="50dp"
android:layout_height="50dp">

<ImageView
    android:id="@+id/info_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="@color/colorAccent" />

</android.support.constraint.ConstraintLayout>

MainActivity

public class MainActivity extends AppCompatActivity implements 
MyRecyclerViewAdapter.ItemClickListener {

MyRecyclerViewAdapter adapter;


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

    // data to populate the RecyclerView with
    String[] data = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", 
"23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", 
"35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", 
"47", "48"};

    // set up the RecyclerView
    RecyclerView recyclerView = findViewById(R.id.rvNumbers);
    int numberOfColumns = 6;
    recyclerView.setLayoutManager(new GridLayoutManager(this, 
     numberOfColumns));
    adapter = new MyRecyclerViewAdapter(this, data);
    adapter.setClickListener(this);
    recyclerView.setAdapter(adapter);
}

@Override
public void onItemClick(View view, int position) {
    Log.i("TAG", "You clicked number " + adapter.getItem(position) + ", 
     which is at cell position " + position);
}
}

MyRecyclerViewAdapter

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

public class MyRecyclerViewAdapter extends 
RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {

private String[] mData;
private LayoutInflater mInflater;
private ItemClickListener mClickListener;
private Context context;


// data is passed into the constructor
MyRecyclerViewAdapter(Context context, String[] data) {
    this.mInflater = LayoutInflater.from(context);
    this.mData = data;
}

// inflates the cell layout from xml when needed
@Override
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 
viewType) {
    View view = mInflater.inflate(R.layout.recyclerview_item, parent, 
false);
    return new ViewHolder(view);



}

// binds the data to the TextView in each cell
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) 
    Picasso.get()
    .load(R.drawable.androidvsapple)
    .into(holder.myImageView);
}

// total number of cells
@Override
public int getItemCount() {
    return mData.length;
}


// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener {

    ImageView myImageView;

    ViewHolder(View itemView) {
        super(itemView);


        myImageView =  itemView.findViewById(R.id.info_text);
        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        if (mClickListener != null) mClickListener.onItemClick(view, 
getAdapterPosition());
    }
}


String getItem(int id) {
    return mData[id];
}


void setClickListener(ItemClickListener itemClickListener) {
    this.mClickListener = itemClickListener;
}

// parent activity will implement this method to respond to click events
public interface ItemClickListener {
    void onItemClick(View view, int position);
}
}
...