私はRecyclerViewにこのようなものを作りたい:RecyclerView GridLayoutManagerと動的な行の高さ
しかし、私はこの取得しています:
を作るための方法がありますそれはRecyclerViewで起こりますか?
私はRecyclerViewにこのようなものを作りたい:RecyclerView GridLayoutManagerと動的な行の高さ
しかし、私はこの取得しています:
を作るための方法がありますそれはRecyclerViewで起こりますか?
postLine.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
それは動作しています、thakns –
のinit:
postLine.setAdapter(postsAdapter);
postLine.setLayoutManager(new GridLayoutManager(getActivity(),2));
recyclerViewにそれらを追加するポストを用意機能
private void preparePosts(JSONArray posts){
listOfLine1.clear(); //SparseArray
listOfLine2.clear(); //SparseArray
postLine.removeAllViews(); //RecyclerView
postList.clear(); //ListArray<Post> postList
int postline2h = 0;
int postline1h = 0;
try{
Post ps;
for(int i = 0; i<posts.length();i++){
ps = new Post(posts.getJSONObject(i));
if(postline1h>postline2h){
listOfLine2.put(listOfLine2.size(),ps);
postline2h += ps.getHeight();
}else{
postline1h += ps.getHeight();
listOfLine1.put(listOfLine1.size(),ps);
}
}
int i =0;
boolean firstnull,secondnull;
while (i!=listOfLine2.size()-1 || i!=listOfLine1.size()-1){
if(listOfLine1.get(i)!=null){
firstnull = false;
postList.add(listOfLine1.get(i));
listOfLine1.remove(i);
}else firstnull = true;
if(listOfLine2.get(i)!=null){
secondnull = false;
postList.add(listOfLine2.get(i));
listOfLine2.remove(i);
}else secondnull = true;
if(secondnull && firstnull) break;
i++;
}
postsAdapter.notifyDataSetChanged();
}catch (Exception e){
log(e);
}
}}
アダプタ:
public class PostsAdapter extends RecyclerView.Adapter<PostsHolder> {
private ArrayList<Post> posts;
public PostsAdapter(ArrayList<Post> postslist){
posts = postslist;
}
@Override
public int getItemCount() {
return posts.size();
}
@Override
public PostsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new PostsHolder(new LinearLayout(parent.getContext()));
}
@Override
public void onBindViewHolder(PostsHolder holder, int position) {
holder.setPost(posts.get(position));
}
@Override
public void onViewRecycled(PostsHolder holder) {
super.onViewRecycled(holder);
holder.getPost().die();
}
}
がonBindViewHolder post.setPostは、ビューを追加する予定ですレイアウトへ
で
あなたのラインを交換&チェックをしてみてくださいスタックオーバーフローを歓迎します。効果的な質問をする方法については、リンクをご覧ください。 https://stackoverflow.com/help/how-to-ask – pvpkiran
ここにjavaとxmlファイルのコードを投稿してください – mdb
@ mdb_5203投稿 –