簡體   English   中英

在ItemClick的列表視圖適配器中顯示隱藏TextView

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM