我有ListView
,其中有数百item
。
我希望当用户点击某个项目(onClick
)时,它会展开并显示一些有关它的详细信息。
但是我希望展示布局,例如RelativeLayout
或LinearLayout
。
我想我必须制作数百种布局。也许有更好的方法?
因为每个项目的不同描述(价格,国家等)。
我已经知道ExpandbleListView
我不想使用child.add("Android");
,因为我希望扩展视图像桌面视图一样进行组织。
因此,当我点击它时,它会展开并显示布局。
我怎样才能做到这一点?
答案 0 :(得分:0)
将LinearLayout
或RelativeLayout
构建为列表项视图的一部分,并最初将visibility
设置为false
。
现在跟踪全局数组中展开的项目,以便在列表中设置扩展视图的正确可见性。
我正在分享一些可能有助于您理解的伪代码。
// Take a global array to keep track of the expanded items in your list
// Lets assume the name of your list is myArrayList
private void int[] expandedItems = new int[myArrayList.size()];
// Now initialize your array with all zeros
for(int i=0; i<expandedItem.length; i++)
expandedItems[i] = 0;
现在,当点击某个项目时,请更新expandedItems
数组中的相应位置。
itemView.setOnClickListener {
//....
@Override
public void onClick(View v){
// Set 1 to indicate the corresponding is view is expanded
expandedItems[position] = 1;
notifyDatasetChanged();
}
}
现在在onBindViewHolder
填写列表如下
if(expandedItems[position] == 1)
expandedLinearLayout.setVisibility(View.VISIBLE);
else
expandedLinearLayout.setVisibility(View.GONE); // Don't forget the else part