从 ArrayList 中删除某些 TextView
Posted
技术标签:
【中文标题】从 ArrayList 中删除某些 TextView【英文标题】:Remove Certain TextViews From ArrayList 【发布时间】:2015-09-15 12:11:44 【问题描述】:我正在使用RecyclerView
来显示ArrayList
,并且我计划有很多TextViews
的组合,所以我没有制作10 个布局文件,而是用我所有的TextViews
制作了一个。
某些行我只想显示TextViews
中的一部分,所以我将它们留空(“”),但显然TextView
仍会占用该空白空间。
所以我认为我必须使用 setVisibility Gone 作为空白,并且可能必须在 onBindViewHolder
下,但我不确定 if 语句的外观。
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>
List<AdapterData> mItems;
public Adapter()
super();
mItems = new ArrayList<>();
AdapterData data = new AdapterData();
data.setName("dummy text");
data.setNameTwo("");
data.setNameThree("");
mItems.add(data);
data = new AdapterData();
data.setName("dummy text");
data.setNameTwo("dummy text");
data.setNameThree("");
mItems.add(data);
data = new AdapterData();
data.setName("");
data.setNameTwo("dummy text");
data.setNameThree("");
mItems.add(data);
data = new AdapterData();
data.setName("");
data.setNameTwo("dummy text");
data.setNameThree("dummy text");
mItems.add(data);
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.recycler_view_card_item, viewGroup, false);
return new ViewHolder(v);
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i)
AdapterData data = mItems.get(i);
viewHolder.mName.setText(data.getName());
viewHolder.mNameTwo.setText(data.getNameTwo());
viewHolder.mNameThree.setText(data.getNameThree());
@Override
public int getItemCount()
return mItems.size();
class ViewHolder extends RecyclerView.ViewHolder
public TextView mName;
public TextView mNameTwo;
public TextView mNameThree;
public ViewHolder(View itemView)
super(itemView);
mName = (TextView)itemView.findViewById(R.id.layoutName);
mNameTwo = (TextView)itemView.findViewById(R.id.layoutNameTwo);
mNameThree = (TextView)itemView.findViewById(R.id.layoutNameThree);
【问题讨论】:
【参考方案1】:使用TextUtils.isEmpty
if(TextUtils.isEmpty(data.getName()))
viewHolder.mName.setVisibility(GONE);
else
viewHolder.mName.setVisibility(VISIBLE);
if(TextUtils.isEmpty(data.getNameTwo()))
viewHolder. mNameTwo.setVisibility(GONE);
else
viewHolder.mNameTwo.setVisibility(VISIBLE);
等等……
【讨论】:
不要忘记“重新显示”视图。例如 if(...)...elseviewHolder.mName.setVisibility(View.VISIBLE) isEmpty 也会检查这个。如果不写data.setName("");
也可以。以上是关于从 ArrayList 中删除某些 TextView的主要内容,如果未能解决你的问题,请参考以下文章
支持获取、设置和删除某些索引的 java arraylist 的 C# 等效项
如何将特定数据字段从 ArrayList 加载到某些 JTextFields?