gpt4 book ai didi

android - 更新 EfficientAdapter ListView Android 中的特定行

转载 作者:行者123 更新时间:2023-11-29 00:16:25 24 4
gpt4 key购买 nike

下面的 Util.class 包含一个最大 2 int 数字的静态 ArrayList。

public class Util extends Activity {

public static ArrayList<Integer> selectedPosition= new ArrayList<Integer>();

selectedPosition.add(3);
selectedPosition.add(5);

}

在我的 getView() 适配器方法中,我尝试更改 TextView 并使图像仅对位置 3 和 5 可见。问题是 ImageView 只有最后一个元素是可见的,我无法显示数字 3 ImageView 。我怎样才能让两个 imageview 在适配器内可见。这是我的 getview 方法。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
vi = convertView;

if (convertView == null) {

vi = inflater.inflate(R.layout.vrow, null);
holder = new ViewHolder();
holder.one = (TextView) vi.findViewById(R.id.text_one);
holder.two = (TextView) vi.findViewById(R.id.text_second);
holder.three = (TextView) vi.findViewById(R.id.text_num_compte);
holder.image = (ImageView)vi.findViewById(R.id.single_image);
holder.relative_layout = (RelativeLayout)vi.findViewById(R.id.corner);

} else
holder = (ViewHolder) vi.getTag();

vi.setTag(holder);

String stDebit =Util.decimalFloatForm(Float.valueOf((data.get(position).getSoldeCompte())));
if (stDebit.startsWith(","))
stDebit = "0 000"+stDebit;

if (data.get(position).getAuthCompte().equalsIgnoreCase("N")){

holder.one.setText(data.get(position).getLibelleCompte());
holder.two.setText(stDebit+" EUR");
holder.three.setText(vi.getResources().getString(R.string.special)+" "+data.get(position).getNumComtpe());

}else {

holder.one.setText(data.get(position).getLibelleCompte());
holder.two.setText("xx,xxx EUR");
holder.three.setText(vi.getResources().getString(R.string.special)+" "+data.get(position).getNumComtpe());
}


holder.image.setVisibility(View.GONE); //hide right tick

System.out.println("VirementEmmeteurSize : "+Util.selectedPosition.size());

//check if selectedPosition is empty
if (Util.selectedPosition!=null){


for(int x=0;x<Util.selectedPosition.size();x++){

int index = Util.selectedPosition.get(x).toString().indexOf(String.valueOf(position));
boolean boolValue = (index == -1?false:true);

if (boolValue){
holder.two.setText(stDebit+" "+data.get(position).getDeviseCompte());
holder.image.setVisibility(View.VISIBLE); //show right tick

}else {
holder.image.setVisibility(View.GONE); //hide right tick
}
}
}




return vi;
}

最佳答案

尝试这种方式,希望这能帮助您解决问题。

  1. 在 ComptePost 类中拿一个标志

    private boolean isSelected;

    public void setIsSelected(boolean isSelected){
    this.isSelected=isSelected;
    }

    public boolean isSelected(){
    return isSelected;
    }
  2. 如何更改选择值。

    data.get(3).setIsSelected(true);

    data.get(5).setIsSelected(true);
  3. 如何在适配器中使用选择值。

    if(data.get(position).isSelected()){
    holder.image.setVisibility(View.VISIBLE);
    }else{
    holder.image.setVisibility(View.GONE);
    }

关于android - 更新 EfficientAdapter ListView Android 中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26587686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com