标题解释它我想解释更多;
我有一个列表视图,所有项目都有橙色背景。简单地说:当点击一个项目时,它将背景变为蓝色。当点击另一个时,最后点击应该是蓝色,之前应该是橙色与其他人。为了实现它,连续一行,我得到2 layouts(blue and orange)
并点击,我使蓝色layout(llTicketViewOnClickContainer)
可见
不仅仅是背景颜色,还有按钮,图像等,我只想简单解释一下。
现在是下面的代码,它来自我们用于列表视图的适配器
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final TicketViewDataObject item=ticketViewObjects.get(position);
if(convertView==null){
convertView = inflater.inflate( R.layout.companyviewlibrary_listview_row_ticketview , parent,false);
}else{
}
ticketView=(TicketView) convertView;
final View clicked=ticketView.findViewById(R.id.llTicketViewOnClickContainer);
ticketView.prepareTicketView(item);
if(item.isClicked())
clicked.setVisibility(View.VISIBLE);
else
clicked.setVisibility(View.GONE);
ticketView.setOnClickListener(new OnClickListener() {
for (TicketViewDataObject item : ticketViewObjects) {
item.setClicked(false);
}
long timeStart =System.currentTimeMillis();
refreshList();
Log.e("TIME_POPULATE",""+(System.currentTimeMillis()-timeStart) );
}
用于refreshList函数
public void refreshList(){
this.notifyDataSetChanged();
}
现在我的问题是当我使用notifyDataSetChanged
时,它会更改所有数据,清除并updates(tries to get images again which is our problem)
,再次重新填充。
我只想更改之前点击的项目的llTicketViewOnClickContainer
可见性。
答案 0 :(得分:2)
您正面临ListView
回收。请参阅此link获取帮助,但您想要的很简单,默认情况下,您应将ListView
背景设置为橙色,并在xml
文件中使用android:listSelector="@drawable/blue_color"
,如:
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/orange"
android:listSelector="@drawable/blue" >
</ListView>
你完成了:)希望这就是你想要的......
答案 1 :(得分:1)
如果您想更改某些项目背景,只需将背景颜色设置为项目视图&#39; itemView&#39;:
if(item_youwant_change)
{
itemView.setBackgroundResource(whatyouwant_color);
}
但重要的是要记住所有其他项目&#39; elseView&#39;,您必须设置为默认颜色:
else
{
elseView.setBackgroundResource(defalut_color);
}
希望这有帮助!
答案 2 :(得分:1)
您可以尝试在适配器中声明变量int selectedRow
,然后在getView()
方法中根据视图的位置对不同的布局进行充气。然后,只要单击列表项,您就必须更新此变量。
答案 3 :(得分:0)
在drawable中创建一个xml文件,然后:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true"
android:drawable="@color/your_color" />
<item android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/your_color" />
</selector>
然后在 getView()中写下:
rowView.setBackgroundResource(R.drawable.list_selector_slider_menu);
其中 list_selector_slider_menu 是drawable中.xml文件的名称。