我有一个列表视图,在列表视图中我有一个textview。因此,此文本视图在listview的每个项目中都可见。因此,当我点击任何Textview时,它的可见性就会消失。但是,当我点击另一个文本视图时,当前必须消失,之前必须可见。 在适配器类中,我尝试了很多东西,但我找不到正确的方法。那么我怎样才能在getView()中获得这个东西。
holder.floorNo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (holder.floorNo.getId() == v.getId()) {
final int position1 = listView
.getPositionForView((LinearLayout) v
.getParent());
} else {
}
}
});
这里position1是click的当前位置。请帮助我。
答案 0 :(得分:1)
您可以将textview的标记设置为holder.settag(holder.floorNo)。点击楼层lister没有得到这个标签Textview floorno =(Textview)v.gettag(); 在这里,您将获得单击的textview并添加可见/不可见的代码。
答案 1 :(得分:0)
您可以使用textview类成员作为"提醒"要知道隐藏了哪个textview,如下所示:
private View mHiddenView = null
private int mFloorNoId = 0
....
....
holder.floorNo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(mHiddenView !=null&&mFloorNoId!=0){
// Show textview that was hidden
mHiddenView.findViewById(mFloorNoId).setVisibility(VISIBLE);
}
// Assign clicked view to hidden one and FloorNo id
mHiddenView = v;
mFloorNoId = holder.floorNo.getId();
// And hide it
mHiddenView.findViewById(mFloorNoId).setVisibility(GONE);
}
});
答案 2 :(得分:0)
我不知道你正在使用哪个适配器。如果你正在使用CursorAdapter,那么在CursorAdapter中通过overridien方法newView()就可以了
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
((TextView) (convertView
.findViewById(R.id.main_body_item_title_second_pics)))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// do your stub here
}
});
}
答案 3 :(得分:0)
在适配器中维护一个boolean列表,指示TextView holder.floorNo的可见性。
boolean[] visibilityArray;
构造函数中的
visibilityArray; = new boolean[ no. Of Elements in your adapter ];
在getView()方法中
holder.floorNo.setVisibility(visibilityArray[position]);
holder.floorNo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
notifyStateChange(position);
}
});
notifyStateChange(position)方法定义如下
private void notifyStateChange(int position) {
for(int i = 0; i<visibilityArray.length; i++){
visibilityArray[i] = true;
}
visibilityArray[position] = false;
this.notifyDataSetChanged();
}