[英]Show Hide TextView in listview adapter on ItemClick
當我的列表視圖被填充時,holder.four引用的TextView是可見的。 當我選擇一個行元素時,我希望Holder.four對所選行可見,但是當我選擇另一行時,我希望前一個Holder.four可見變為不可見,而新的選定位置行Holder.four變為可見。 我怎樣才能做到這一點。 這是我填充列表視圖的getview方法。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.row_operation, null);
holder = new ViewHolder();
holder.one = (TextView) vi.findViewById(R.id.text_on);
holder.two = (TextView) vi.findViewById(R.id.text_messag);
holder.three = (TextView) vi.findViewById(R.id.text_th);
holder.four = (TextView) vi.findViewById(R.id.text_details);
vi.setTag(holder);
} else
holder = (ViewHolder) vi.getTag();
vi = inflater.inflate(R.layout.row_operation, null);
holder = new ViewHolder();
holder.one = (TextView) vi.findViewById(R.id.text_on);
holder.two = (TextView) vi.findViewById(R.id.text_messag);
holder.three = (TextView) vi.findViewById(R.id.text_th);
holder.four = (TextView) vi.findViewById(R.id.text_details);
vi.setTag(holder);
holder.one.setText(data.get(position).getmontant()+" EUR");
holder.two.setText((data.get(position).getlibelle()));
holder.three.setText(data.get(position).getdateValeur());
holder.four.setVisibility(View.GONE);
holder.four.setText(data.get(position).getdateOper());
//clickEvent();
return vi;
}
干得好 :
Holder selectedHolder;
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.row_operation, null);
holder = new ViewHolder();
holder.one = (TextView) vi.findViewById(R.id.text_on);
holder.two = (TextView) vi.findViewById(R.id.text_messag);
holder.three = (TextView) vi.findViewById(R.id.text_th);
holder.four = (TextView) vi.findViewById(R.id.text_details);
vi.setTag(holder);
} else
holder = (ViewHolder) vi.getTag();
//vi = inflater.inflate(R.layout.row_operation, null);
//holder = new ViewHolder();
//holder.one = (TextView) vi.findViewById(R.id.text_on);
//holder.two = (TextView) vi.findViewById(R.id.text_messag);
//holder.three = (TextView) vi.findViewById(R.id.text_th);
//holder.four = (TextView) vi.findViewById(R.id.text_details);
holder.one.setText(data.get(position).getmontant()+" EUR");
holder.two.setText((data.get(position).getlibelle()));
holder.three.setText(data.get(position).getdateValeur());
holder.four.setVisibility(View.GONE);
holder.four.setText(data.get(position).getdateOper());
//clickEvent();
vi.setTag(holder);
vi.setOnClickListener(this);
return vi;
}
@Overrite
public void onClick(View v){
v.post(new Runnable() {
@Override
public void run() {
ViewHolder holder = ((ViewHolder)v.getTag());
holder.four.setVisibility(View.VISIABLE);
if(selectedHolder != null)
selectedHolder.four.setVisibility(View.INVISABLE);
selectedHolder = holder;
}
});
}
檢查我對這個問題的答案: 如何獲得android list view選擇器項以在屏幕外記住其狀態?
我認為您可能會使用類似的想法:擴展項目的布局。 完成此操作后,您還可以創建自定義事件並在需要的地方捕獲它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.