Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
Java 以编程方式在RecyclerView项(项中的特定元素)上设置背景色 我有 AcvivyGooe,它包含一个PAR号。在同一个活动中我有一个RecyclerView,当然,RecyclerView包含多个项目。这些项目有不同的票面号码。 例如, ActuviyPox中的PAR数为3,现在在代码> RealReVIEW 项目中,假设我有1个项目,其中有3个,第二个有2个,第三个有4个。 如果一个项目的编号与AcvivyGoovis/Cuff>的PAR数相同,那么该项目的PART数字背景应该变成灰色。如果在活动游戏中项目的PAR数大于PAR数,则项目的PART数背景应该变为紫色。最后,如果它小于AcvivyGoovis/Cl>的Par数,该项的PART数背景应该变为蓝色。_Java_Android_Android Recyclerview - Fatal编程技术网

Java 以编程方式在RecyclerView项(项中的特定元素)上设置背景色 我有 AcvivyGooe,它包含一个PAR号。在同一个活动中我有一个RecyclerView,当然,RecyclerView包含多个项目。这些项目有不同的票面号码。 例如, ActuviyPox中的PAR数为3,现在在代码> RealReVIEW 项目中,假设我有1个项目,其中有3个,第二个有2个,第三个有4个。 如果一个项目的编号与AcvivyGoovis/Cuff>的PAR数相同,那么该项目的PART数字背景应该变成灰色。如果在活动游戏中项目的PAR数大于PAR数,则项目的PART数背景应该变为紫色。最后,如果它小于AcvivyGoovis/Cl>的Par数,该项的PART数背景应该变为蓝色。

Java 以编程方式在RecyclerView项(项中的特定元素)上设置背景色 我有 AcvivyGooe,它包含一个PAR号。在同一个活动中我有一个RecyclerView,当然,RecyclerView包含多个项目。这些项目有不同的票面号码。 例如, ActuviyPox中的PAR数为3,现在在代码> RealReVIEW 项目中,假设我有1个项目,其中有3个,第二个有2个,第三个有4个。 如果一个项目的编号与AcvivyGoovis/Cuff>的PAR数相同,那么该项目的PART数字背景应该变成灰色。如果在活动游戏中项目的PAR数大于PAR数,则项目的PART数背景应该变为紫色。最后,如果它小于AcvivyGoovis/Cl>的Par数,该项的PART数背景应该变为蓝色。,java,android,android-recyclerview,Java,Android,Android Recyclerview,以下是我尝试在适配器中执行的操作,以使其正常工作: @Override public void onBindViewHolder(@NonNull GameViewHolder holder, int position) { holder.mTextPar.setText(currentItem.getText2()); /** If persons par number is smaller than course par number, then change person

以下是我尝试在适配器中执行的操作,以使其正常工作:

@Override
public void onBindViewHolder(@NonNull GameViewHolder holder, int position) {
    holder.mTextPar.setText(currentItem.getText2());

    /** If persons par number is smaller than course par number, then change persons par number background to blue **/
    if (Integer.parseInt(holder.mTextPar.getText().toString()) < Integer.parseInt(ActivityGame.mHoleNm.getText().toString())) {
        holder.mTextPar.setBackgroundColor(Color.parseColor("#255eba"));
        notifyDataSetChanged();
    }
}
@覆盖
public void onBindViewHolder(@NonNull GameViewHolder,int位置){
holder.mTextPar.setText(currentItem.getText2());
***********************************〕
if(Integer.parseInt(holder.mTextPar.getText().toString())
这是我认为会起作用的,但事实并非如此,当我试图打开所有这些发生的
ActivityGame
时,我的应用程序立即崩溃


我假设
onBindViewHolder
是实现这一点的正确位置,但我显然有一个错误的方法。如果你有更好的想法,我应该在哪里或如何处理这个问题,请分享。提前感谢。

活动中不应该有静态小部件。相反,您应该将PAR数作为参数传递给适配器构造函数,这样您就不必在活动中声明静态方法来获得PAR值。

如果PAR值可能会更改,则向适配器中添加一个方法以获取新的PAR值,然后刷新适配器项。该方法将从活动中调用,每当PAR值发生变化时,

< P>首先,您不必每次调用“<代码> OnbdIdVeWordLoad 函数”时设置背景颜色。p> 其次,您需要在
onBindViewHolder
函数中实现背景色的所有条件

我想建议一个如下的实现

@Override
public void onBindViewHolder(@NonNull GameViewHolder holder, int position) {
    holder.mTextPar.setText(currentItem.getText2());
    Integer parFromActivity = -1;
    if(ActivityGame.mHoleNm != null) 
        parFromActivity = Integer.parseInt(ActivityGame.mHoleNm.getText().toString());

    /** If persons par number is smaller than course par number, then change persons par number background to blue **/
    if (Integer.parseInt(holder.mTextPar.getText().toString()) < parFromActivity) {
        holder.mTextPar.setBackgroundColor(Color.parseColor("#255eba"));
        // notifyDataSetChanged(); // We do not need this line
    } else if (Integer.parseInt(holder.mTextPar.getText().toString()) > parFromActivity) {
        holder.mTextPar.setBackgroundColor(Color.parseColor("#800080")); // purple maybe
    } else {
        holder.mTextPar.setBackgroundColor(Color.parseColor("#D3D3D3"));
    }
}
@覆盖
public void onBindViewHolder(@NonNull GameViewHolder,int位置){
holder.mTextPar.setText(currentItem.getText2());
整数parFromActivity=-1;
if(ActivityGame.mHoleNm!=null)
parFromActivity=Integer.parseInt(ActivityGame.mHoleNm.getText().toString());
***********************************〕
if(Integer.parseInt(holder.mTextPar.getText().toString())parFromActivity){
holder.mTextPar.setBackgroundColor(Color.parseColor(#800080”);//可能是紫色
}否则{
holder.mTextPar.setBackgroundColor(Color.parseColor(“#d3d3”));
}
}
希望有帮助

编辑:

我主要假设当您从适配器使用此视图时,从活动引用的视图是
null
。如果是这种情况,则需要以其他方式将值传递给适配器


既然你已经发现了这个问题,我也在回答这个问题。该视图没有仅包含
整数。因此,
Integer.parseInt(ActivityGame.mHoleNm.getText().toString()
抛出了
ParseException

如果你的应用程序崩溃了,那么Logcat中会有一个相应的条目-请分享它。它指向我在com.example.frisbeecady.GameAdapter.onBindViewHolder上的If行(GameAdapter.java:89)请复制并粘贴堆栈跟踪。通常它包含的不仅仅是行号-我正在寻找以“Exception”结尾的内容但是我也希望看到堆栈跟踪的一般情况。我需要做更多的条件,但我不想在这个1工作之前做更多的条件。目前这个if(Integer.parseInt(holder.mTextPar.getText().toString())null
你试图解析活动中的值的位置。我主要假设当你从适配器引用该值时,视图为null。如果是这样,那么你需要传递该值以其他方式连接到适配器。如果不是这样,请共享您的日志猫,以便我们进一步调查原因。不起作用,该数字永远不能为空,因为总有数字。现在我发现,当我手动更改Integer.parseInt(ActivityGame.mHoleNm.getText().toString())时(只是为了尝试)到3,它起作用了,因此由于某种原因,我的适配器无法正确地从活动中获取数字…是的,这就是我所指的。您需要有另一种方法将该数字从活动传递到适配器。在活动中声明的
public static
变量可能可以正常工作。