android - 回收者 View |具有共享转换的 OnItemClickListener

标签 android android-activity android-recyclerview transition onitemclicklistener

我想为我的应用程序共享过渡。为此,我需要一个 OnItemClickListener。我已经搜索了一段时间,但没有找到任何适合我的东西。

这是我的 AdapterViewHolder:

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.PostViewHolder>{

List<Post> posts;


public ListAdapter(List<Post> posts) {
    Log.d("ListAdapter", "");
    this.posts = posts;
}

@Override
public int getItemCount() {
    Log.d("getItemCount", "");
    return posts.size();
}

@Override
public PostViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    Log.d("onCreateView", "");
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.insert_layout, viewGroup, false);
    PostViewHolder pvh = new PostViewHolder(v);
    return pvh;
}

@Override
public void onBindViewHolder(PostViewHolder postViewHolder, int i) {
    Log.d("onBindView", "");
    postViewHolder.username.setText(posts.get(i).getUsername());
    postViewHolder.text.setText(posts.get(i).getText());
    postViewHolder.time.setText(Long.toString(posts.get(i).getTime()));
    postViewHolder.postPhoto.setImageResource(posts.get(i).returnIMG());
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    Log.d("onAttached", "");
    super.onAttachedToRecyclerView(recyclerView);
}


public static class PostViewHolder extends RecyclerView.ViewHolder{
    CardView cv;
    TextView username;
    TextView time;
    TextView text;
    ImageView postPhoto;

    PostViewHolder(View itemView) {
        super(itemView);
        Log.d("PostViewHolder", "");
        cv = (CardView) itemView.findViewById(R.id.cv);
        username = (TextView) itemView.findViewById(R.id.usernameText);
        time = (TextView) itemView.findViewById(R.id.timeText);
        text = (TextView) itemView.findViewById(R.id.textText);
        postPhoto = (ImageView) itemView.findViewById(R.id.postPhoto);
    }


}}

对于过渡,我有这个:

Intent intent = new Intent(MainActivity.this, PostViewActivity.class);

    ImageView placeImage = (ImageView)view.findViewById(R.id.postPhoto);
    TextView textView = (TextView)view.findViewById(R.id.textText);

    Pair<View, String> imagePair = Pair.create((View) placeImage, getString(R.string.transition_image));
    Pair<View, String> holderPair = Pair.create((View) textView, getString(R.string.transition_username));

    ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this, imagePair, holderPair);
    ActivityCompat.startActivity(MainActivity.this, intent, options.toBundle());

但现在我需要一个 OnClickListener 来连接它。有人可以帮助我吗?

谢谢!

最佳答案

您可以将 OnClickListener 作为构造函数参数传递给您的适配器(或编写一个 setter),并在 onBindViewHolder()< 中将其绑定(bind)到您的 itemView/:

例如:

List<Post> posts;
View.OnClickListener listener;

public ListAdapter(List<Post> posts, View.OnClickListener listener) {
    Log.d("ListAdapter", "");
    this.posts = posts;
    this.listener = listener;
}

// ...

@Override
public void onBindViewHolder(PostViewHolder postViewHolder, int i) {
    Log.d("onBindView", "");
    postViewHolder.username.setText(posts.get(i).getUsername());
    postViewHolder.text.setText(posts.get(i).getText());
    postViewHolder.time.setText(Long.toString(posts.get(i).getTime()));
    postViewHolder.postPhoto.setImageResource(posts.get(i).returnIMG());

    postViewHolder.itemView.setOnClickListener(listener);
}

MainActivity 中实例化您的适配器:

ListAdapter adapter = new ListAdapter(posts, new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // do your stuff
    }
});

关于android - 回收者 View |具有共享转换的 OnItemClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38414405/

相关文章:

android - 如何将 ListView 中的每个项目与数据库中的 id 相关联

java - 带有 SearchView 的 Android abs,onQueryTextListener 不工作

android - 获取新保存数据的数据库 ID 并将其传递给之前的 Activity

Android - 创建和管理 Activity

java - 如何使用位图将图像分享到社交媒体?

android - Intent onActivityResult 进入另一个 Activity

android - Activity之间的动画,其中一个是singleTask

java - 如何修复 ViewHolder 上的 "NullPointerException"?

android - RecyclerView 混淆项目

java - 试图将 Activity 转换为 fragment