Java ListView-视图与许多行相关
我希望当我触摸列表视图中的项目时它消失。它正在工作,但是 问题是当我滚动列表时。随机项目正在消失或显示。 这是我的代码:Java ListView-视图与许多行相关,java,android,listview,Java,Android,Listview,我希望当我触摸列表视图中的项目时它消失。它正在工作,但是 问题是当我滚动列表时。随机项目正在消失或显示。 这是我的代码: private ListView list; (...) list = (ListView) findViewById(R.id.units_list); adapter = new UnitAdapter(this, R.layout.row_list, units); list.setAdapter(adapter); list.setOnItemClickListen
private ListView list;
(...)
list = (ListView) findViewById(R.id.units_list);
adapter = new UnitAdapter(this, R.layout.row_list, units);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
v.setVisibility(View.INVISIBLE);
}
});
私有列表视图列表;
(...)
列表=(ListView)findViewById(R.id.units\u列表);
适配器=新的单元适配器(此,R.layout.row_列表,单位);
list.setAdapter(适配器);
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
v、 设置可见性(视图不可见);
}
});
ListView XML:
<ListView
android:id="@+id/units_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/strut"
android:layout_marginTop="5dp" >
</ListView>
row_list.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
android:descendantFocusability="blocksDescendants" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginBottom="15dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:gravity="center_vertical" />
<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:layout_toRightOf="@id/img"
android:gravity="center_vertical"
android:textSize="14sp" />
<ImageView
android:id="@+id/upgrade"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_marginBottom="15dp"
android:layout_marginRight="10dp"
android:layout_marginTop="15dp"
android:gravity="center_vertical" />
我也试过:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
list.getChildAt(position).setVisibility(View.INVISIBLE);
}
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
list.getChildAt(位置).setVisibility(视图.不可见);
}
甚至:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
list.getChildAt((int) id).setVisibility(View.INVISIBLE);
}
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
list.getChildAt((int)id).setVisibility(View.INVISIBLE);
}
但它的工作原理是一样的。
有什么问题?为什么视图与多行相关?如何解决此问题?这可能与在Android中循环使用ListView中的视图有关,因此当您编辑一行时,在多行中滚动时可能会看到差异 一种解决方案是更新底层适配器,然后调用notifyDataSetChanged。但可能会有更平滑的解决方案
listview重用可见区域外的项