代码:
public class TimelineFragment extends Fragment {
PostViewAdapter postViewAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View baseView = inflater.inflate(R.layout.fragment_timeline, container, false);
ArrayList<Postitem> listitem = new ArrayList<>();
RecyclerView rvList = (RecyclerView) baseView.findViewById(R.id.rv_list);
for (int i = 0; i<30; i++) {
Postitem item = new Postitem();
listitem.add(i, item);
}
RecyclerView recyclerView = (RecyclerView) baseView.findViewById(R.id.rv_list);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
postViewAdapter = new PostViewAdapter();
recyclerView.setAdapter(postViewAdapter);
return baseView;
}
class PostViewAdapter extends RecyclerView.Adapter<PostViewHolder> {
@Override
public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View baseView = getActivity().getLayoutInflater().inflate(R.layout.item_post, parent, false);
PostViewHolder postViewHolder = new PostViewHolder(baseView);
return postViewHolder;
}
@Override
public void onBindViewHolder(PostViewHolder holder, int position) {
ViewGroup.LayoutParams params = new RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 200
);
holder.itemView.setLayoutParams(params);
ViewGroup.LayoutParams params_open = new RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
);
holder.itemView.setLayoutParams(params);
}
@Override
public int getItemCount() {
return 30;
}
}
class PostViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView iv_red, iv_yellow;
public PostViewHolder(View itemView) {
super(itemView);
iv_yellow = (ImageView) itemView.findViewById(R.id.iv_yellow);
iv_red = (ImageView) itemView.findViewById(R.id.iv_red);
iv_red.setOnClickListener(this);
}
@Override
public void onClick(View view) {
final int position = getLayoutPosition();
}
}
}
这些代码适用于Fragment上的 Recyclerview 。
显示30 post_item。
你需要注意的是这个。
@Override
public void onBindViewHolder(PostViewHolder holder, int position) {
ViewGroup.LayoutParams params = new RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 200
);
holder.itemView.setLayoutParams(params);
ViewGroup.LayoutParams params_open = new RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
);
holder.itemView.setLayoutParams(params);
}
我为了折叠或展开而制作了这个。
我想在每个itemview中使用它,所以我想制作像折叠或展开每个 itemview 的效果。
我以为我必须在iv_red上设置onClickListener,所以我做了
@Override
public void onClick(View view) {
final int position = getLayoutPosition();
}
但我不知道在那之后我做了什么。
谁有个主意?请帮帮我修改
抱歉,我错过了很多东西。现在我正在制作从服务器提供数据的android应用程序。
来自服务器的数据就像{“text”:“blahblah”,“image”:SomethingImageUrl“}。我想在RecyclerView ListLayout中显示这些数据。
但实际上我想要的是ListLayout的项目仅显示文本,最终用户点击显示的文本,hiden的图像显示给该用户。即
就像其他应用程序(如instagram或facebook)看到更多功能。
问题是如何为Recyclerview的每个项目设置onclicklistener,以应用LayoutParams。即使我将OnclickListener添加到我的PostViewHolder中,我也不知道了。
答案 0 :(得分:0)
如果要快速解决问题,可以在项目中添加一个外部库。 在互联网上搜索,我发现可以在github上找到一个图书馆:
https://github.com/Ramotion/folding-cell-android
首先将此代码放在您的Grandle中:
implementation 'com.ramotion.foldingcell:folding-cell:1.2.3'
最后一步一步按照主页上显示的说明进行操作。