我一直在思考,并且无法弄清楚如何实现这个目标:我正在制作一个简单的待办事项应用程序并且看到了一个漂亮的设计。添加待办事项时,第一行是EditText:
保存后,待办事项显示为TextView。任何想法如何实现这一目标?
答案 0 :(得分:1)
您必须为不同的布局创建不同的viewHolder类,并在onCreateVIewHolder中附加不同的视图。这是一个例子:
private Activity currActivity;
private Context currContext;
private List<CommonCategory> itemList;
public HomeFeedRecyclerAdapter(Activity currActivity, Context currContext, ArrayList<CommonCategory> itemList) {
this.itemList = itemList;
this.currActivity = currActivity;
this.currContext = currContext;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
RecyclerView.ViewHolder viewHolder;
switch (viewType) {
case TYPE_ONE: {
view = getLayoutView(parent, R.layout.list_one);
viewHolder = new EditTextViewHolders(view, currActivity);
break;
}
case TYPE_TWO: {
view = getLayoutView(parent, R.layout.list_two);
viewHolder = new TextViewHolders(view, currActivity, getItem(viewType));
break;
}
default: {
viewHolder = null;
}
}
return viewHolder;
}
然后创建两个不同的viewHolder类(在本例中为EditTextViewHolders和TextViewHolders)并在那里定义您的视图。然后在输入文本时更新ArrayList和RecyclerView(notifyDataSetChanged())。
答案 1 :(得分:0)
所以我的方法就是这样。
public void onBindViewHolder(HolderClass holder, int position) {
if (position == 0){
editTest.setVisibility(View.VISIBLE);
textView.setVisibility(View.GONE);
} else {
editTest.setVisibility(View.GONE);
textView.setVisibility(View.VISIBLE);
textView.setText(listItem.getTitle());
}
对于第一个位置保持editext可见,对于休息位置,保持textview可见。
制作如下布局文件: -
<RelativeLayout
width="match_parent"
height="50dp">
<EditText
width="match_parent"
height="wrap_content"/>
<TextView
width="match_parent"
height="wrap_content"/>
</RelativeLayout>
希望它有所帮助。