Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不在recyclerView中工作的项目的可见性_Android_Android Recyclerview - Fatal编程技术网

Android 不在recyclerView中工作的项目的可见性

Android 不在recyclerView中工作的项目的可见性,android,android-recyclerview,Android,Android Recyclerview,我有大约12张名片。每一个都将ImageView的可见性设置为GONE,这取决于“high”变量是真是假,但当我向下滚动然后向上滚动时,一些ImageView小部件消失了,我必须指出最后一个ImageView也没有显示 @Override public void onBindViewHolder(ViewHolder viewHolder, int i) { Currency currency = currencies.get(i); Double va

我有大约12张名片。每一个都将ImageView的可见性设置为GONE,这取决于“high”变量是真是假,但当我向下滚动然后向上滚动时,一些ImageView小部件消失了,我必须指出最后一个ImageView也没有显示

@Override
    public void onBindViewHolder(ViewHolder viewHolder, int i) {
        Currency currency = currencies.get(i);

        Double valor_actual = currencies.get(i).getValores().get(0);
        Double valor_anterior = currencies.get(i).getValores().get(1);

        viewHolder.textValue.setText(valor_actual.toString());

        BigDecimal bigDecimal = null;
        if (currency.getHigh()) {
            bigDecimal = new BigDecimal(valor_actual).subtract(new BigDecimal(valor_anterior));
            viewHolder.textInfo.setTextColor(Color.parseColor("#ff669900"));
            // doesn't work properly
            viewHolder.imageDown.setVisibility(View.GONE);
        }
        if (!currency.getHigh()){
            bigDecimal = new BigDecimal(valor_anterior).subtract(new BigDecimal(valor_actual));
            viewHolder.textInfo.setTextColor(Color.parseColor("#ffcc0000"));
            // doesn't work properly
            viewHolder.imageUp.setVisibility(View.GONE);
        }

        String unidad_medida = currency.getUnidad_medida();
        if (bigDecimal != null) {
            try {
                StringBuilder sb = new StringBuilder(currencyFormat(bigDecimal));
                if (unidad_medida.equalsIgnoreCase("porcentaje")) {
                    sb.deleteCharAt(0);
                    sb.insert(0, "%");
                }
                viewHolder.textInfo.setText(sb.toString());
            } catch (Exception e) {
                Log.e(TAG, "Exception: " + e.getMessage());
            }
        }
        viewHolder.textName.setText(currency.getNombre());
    }
这里很好用

但当我向下和向后滚动以向上滚动时,第三个CardView不会显示ImageView:


您还需要在else条件下设置Visible。如果要在运行时设置它们的可见性,请对作为列表项存在的每个项目执行此操作

if (currency.getHigh()) {
     bigDecimal = new BigDecimal(valor_actual).subtract(new BigDecimal(valor_anterior));
     viewHolder.textInfo.setTextColor(Color.parseColor("#ff669900"));
     // doesn't work properly
     viewHolder.imageDown.setVisibility(View.GONE);
     viewHolder.imageUp.setVisibility(View.VISIBLE);  
}
else {
     bigDecimal = new BigDecimal(valor_anterior).subtract(new BigDecimal(valor_actual));
     viewHolder.textInfo.setTextColor(Color.parseColor("#ffcc0000"));
     // doesn't work properly
     viewHolder.imageDown.setVisibility(View.VISIBLE);
     viewHolder.imageUp.setVisibility(View.GONE); 
 }

您还需要在else条件下设置Visible。如果要在运行时设置它们的可见性,请对作为列表项存在的每个项目执行此操作

if (currency.getHigh()) {
     bigDecimal = new BigDecimal(valor_actual).subtract(new BigDecimal(valor_anterior));
     viewHolder.textInfo.setTextColor(Color.parseColor("#ff669900"));
     // doesn't work properly
     viewHolder.imageDown.setVisibility(View.GONE);
     viewHolder.imageUp.setVisibility(View.VISIBLE);  
}
else {
     bigDecimal = new BigDecimal(valor_anterior).subtract(new BigDecimal(valor_actual));
     viewHolder.textInfo.setTextColor(Color.parseColor("#ffcc0000"));
     // doesn't work properly
     viewHolder.imageDown.setVisibility(View.VISIBLE);
     viewHolder.imageUp.setVisibility(View.GONE); 
 }

当数据集合的元素在运行时根据用户操作或网络事件发生更改时,可使用RecyclerView小部件

RecyclerView使用可重用的视图,可以是imageview或textview

因此,最好对小数据集使用BaseAdapter


当数据集合的元素在运行时根据用户操作或网络事件发生变化时,可使用RecyclerView小部件

RecyclerView使用可重用的视图,可以是imageview或textview

因此,最好对小数据集使用BaseAdapter


当您滚动时,用于在位置0显示项目的同一视图可以重新用于在位置5显示项目,例如,如果位置0的项目不再可见(这样,循环视图通过使用已创建但不可见的视图避免创建新视图)

所以让我们考虑一个场景,当我们最终看不到图像时,

位置0处的项目应显示向上图标,位置5处的项目应显示向下图标。当您滚动时,recyclerview将重用为pos 0创建的视图,以显示pos 5的视图。因此,基本上您最终会调用viewHolder.imageUp.setVisibility(View.go)和viewHolder.imageDown.setVisibility(View.go);同样的观点

解决方案是操纵其他视图的可见性,如:

viewHolder.imageUp.setVisibility(View.GONE);

viewHolder.imageDown.setVisibility(View.VISIBLE);

当您滚动时,用于在位置0处显示项目的同一视图可能会重新用于在位置5上显示项目,例如,如果位置0处的项目不再可见(这样,循环视图通过使用已创建但不可见的视图避免创建新视图)

所以让我们考虑一个场景,当我们最终看不到图像时,

位置0处的项目应显示向上图标,位置5处的项目应显示向下图标。当您滚动时,recyclerview将重用为pos 0创建的视图,以显示pos 5的视图。因此,基本上您最终会调用viewHolder.imageUp.setVisibility(View.go)和viewHolder.imageDown.setVisibility(View.go);同样的观点

解决方案是操纵其他视图的可见性,如:

viewHolder.imageUp.setVisibility(View.GONE);

viewHolder.imageDown.setVisibility(View.VISIBLE);