이 그림과 같이 I 행의 나머지 부분과 달라야합니다 첫 번째 행의 RecyclerView
레이아웃 사용자 정의 RecyclerView
를 구축하기 위해 노력하고있어이RecyclerView가 예기치 않게 동작
내가 검색과 발견했습니다 일부 자원은 012 MainActivity
에public class PostDetailAdapter extends RecyclerView.Adapter<ViewHolder> {
private static final String TAG = PostDetailAdapter.class.getName();
private List<Solution> mSolutionList;
private Issue mIssue;
private Context mContext;
public static final int ISSUE = 0;
public PostDetailAdapter(Context mContext, Issue mIssue, List<Solution> mSolutionList){
this.mContext = mContext;
this.mIssue = mIssue;
this.mSolutionList = mSolutionList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v;
try {
if (viewType == ISSUE) {
v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.row_detail_issue, viewGroup, false);
return new PostDetailViewHolder(v);
} else {
v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.row_detail_solution, viewGroup, false);
return new AnswerDetailViewHolder(v);
}
}catch (Exception e){
Toast.makeText(mContext, "Error caused by " + e.getCause(), Toast.LENGTH_SHORT).show();
Log.e(TAG, "Error caused by " + e.getCause());
return null;
}
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
try {
if (viewHolder.getItemViewType() == ISSUE) {
PostDetailViewHolder postDetailViewHolder = (PostDetailViewHolder) viewHolder;
postDetailViewHolder.setTitleText(mIssue.getQ());
postDetailViewHolder.setDescText(mIssue.getD());
} else {
AnswerDetailViewHolder answerDetailViewHolder = (AnswerDetailViewHolder) viewHolder;
answerDetailViewHolder.setDescText(mSolutionList.get(position).getD());
}
} catch (Exception e){
e.printStackTrace();
}
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return 0;
} else{
return 1;
}
}
@Override
public int getItemCount() {
return (null != mSolutionList) ? mSolutionList.size() : 0/0;
}
}
로 RecyclerView
에 대한 사용자 정의 어댑터에 대한 솔루션을 가지고 이 시점에서 31,
미리 채워진이 잘 작동 List<Soultion>
을 예상대로하지만 난 변경했습니다 어댑터
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCount +=1;
Solution solution = new Solution("Solution " + mCount);
mSolutionList.add(solution);
mAdapter.notifyDataSetChanged();
Log.e("MAIN_ACTIVITY", "Click return..." + mCount);
}
});
로 클릭 populateSolutionList()
를 제거를 통해 할 Solution
를 추가 할 때
@Override
public int getItemCount() {
try {
if (!mSolutionList.isEmpty()){
int i = (null != mSolutionList) ? mSolutionList.size() : 0/0;
return (i);
}else {
return 1;
}
}catch (Exception e){
return 0;
}
}
첫 번째 솔루션 행을 클릭했을 때 추가되었지만 RecyclerView
에 표시되지 않은 경우 다른 모든 어댑터가 나와있는 것으로 나타났습니다. 어댑터 문제가 있음을 알았습니다. getItemCount()
아무튼 나에게 어떻게 제안 할 수 있습니까? s
이 보이는'(널 (null) = mSolutionList!)? mSolutionList.size() + 1 : 1' –