Android 使用简单适配器填充时,listview的每个项目的文本颜色不同

Android 使用简单适配器填充时,listview的每个项目的文本颜色不同,android,listview,android-listview,Android,Listview,Android Listview,我试图在填充如下图所示的项目时,在listview中为每个项目设置不同的文本颜色,但我无法使其工作 其想法是,如果Rata Rata的数量超过75,则文本颜色将设置为黑色,但如果低于此值,则将设置为红色 这是我的代码,我正在重写getview方法: calonSiswa.addmap; list=ListView findviewbydr.id.list; ListAdapter=new SimpleAdapterSeleksini.this, 卡隆西斯瓦, R.layout.activity

我试图在填充如下图所示的项目时,在listview中为每个项目设置不同的文本颜色,但我无法使其工作

其想法是,如果Rata Rata的数量超过75,则文本颜色将设置为黑色,但如果低于此值,则将设置为红色

这是我的代码,我正在重写getview方法:

calonSiswa.addmap; list=ListView findviewbydr.id.list; ListAdapter=new SimpleAdapterSeleksini.this, 卡隆西斯瓦, R.layout.activity_seleksi_nilai_single_item_view, 新字符串[]{ 乌鲁坦,佩德法塔兰, TAG_NAMA_LENGKAP,TAG_JURUSAN, 塔古·拉古·拉古·尼莱,塔古·卡拉·塞莱克斯 }, 新int[]{ R.id.nomorUrutan,R.id.noPendaftar, R.id.namaPendaftar,R.id.jurusanPendaftar, R.id.rataRataNilai,R.id.caraSeleksi } { @凌驾 公共视图getViewint位置,视图转换视图, 视图组父级{ 视图=super.getViewposition,convertView, 父母亲 float ratarata=float.parseFloatrata_rata; int posisi=位置; int textColorId=R.color.black; 文本查看文本; text=TextView视图 .findviewbydr.id.noPendaftar; 如果ratarata=75{ textColorId=R.color.black; } text.setTextColorgetResources.getColor textColorId; 返回视图; }
}; 很明显,在循环中调用setAdapter方法时,ratarata的值始终是getView中最后一个

Get rata_rata by position

 int textColorId;
   TextView text; //add this lines in global 

    @Override
      public View getView(int position, View convertView, ViewGroup parent) {
                View view = super.getView(position, convertView, parent);
                float ratarata = Float.parseFloat(rata_rata);
                int posisi = position;


                text = (TextView) view.findViewById(R.id.noPendaftar);

                if (ratarata <= 75)
                {
                  textColorId = R.color.red;
                } else {
                  textColorId = R.color.black;
                }
                text.setTextColor(getResources().getColor(textColorId));
                return view;
              }
            };
rata_rata=calonSiswa.getposition.getTAG_rata_rata_NILAI

试试这种方法可能会对你有所帮助


问题解决了,多亏了situee,使用

rata_rata=calonSiswa.getposition.getTAG_rata_rata_NILAI

下面是代码:

@ 推翻 PostExecuteJSONObject json上受保护的无效{ pDialog.discover; 试一试{ //从URL获取JSON数组 pendaftar=json.getJSONArrayTAG_OS; 对于int i=0;ivalue HashMapmap=newhashmap; 地图:putTAG_NO_URUTAN,nomor; 地图:putTAG_NO_PENDAFTARAN,NO_PENDAFTARAN; 地图:putTAG_NAMA_LENGKAP,NAMA_LENGKAP; putTAG_JURUSAN地图,JURUSAN; 拉塔拉塔拉塔尼莱地图,拉塔拉塔; 地图:putTAG_CARA_SELEKSI,CARA_SELEKSI; calonSiswa.addmap; ListView list=ListView findViewByIdR.id.list; 适配器=新的SimpleAdapter SeleksiNilai.这个,calonSiswa, R.layout.activity_seleksi_nilai_single_item_view, 新字符串[]{ 乌鲁坦、潘达夫塔兰、朗卡、朱鲁桑、尼莱、卡拉西 }, 新int[]{ R.id.nomorUrutan,R.id.noPendaftar,R.id.namaPendaftar,R.id.jurusanPendaftar,R.id.rataRataNilai,R.id.caraSeleksi } { @凌驾 公共视图getViewint位置、视图转换视图、视图组父级{ 视图=super.getViewposition,convertView,父视图; //这里我添加了来自situee的代码 字符串rata\u rata1=calonSiswa.getposition.getTAG\u rata\u rata\u NILAI; float ratarata=float.parseFloatrata_rata1; ////////////////////////// int textColorId; 文本查看文本; text=TextView view.findviewbydr.id.noPendaftar;
如果ratarata您的rata_rata来自哪里?@alijandro通过php从数据库中获取它。您的问题解决了吗@WandaTeng@Mano不,仍然无法解决这个问题,有什么建议吗?问题是,只要最后一个ratarata值超过或低于75,它就会改变所有项目的颜色,而不是具体的位置,我正在尝试获取位置n但找不到如何操作的线索。不要将textcolorid添加为黑色,首先检查条件,然后放置值已将setAdapter移到循环外,但什么都没有change@WandaTeng不是setAdapter,将新适配器代码移到外部,ListAdapter=new SimpleAdapter请更新您的代码,是否已在logcat中打印ratarata值?它不起作用,但这个问题已经解决了,谢谢你。
 @Override
            public View getView(int position, View convertView,
            ViewGroup parent) {
            View view = super.getView(position, convertView,
              parent);

            text1 =(TextView)view.findViewById(R.id.noPendaftar);



             if (ratarata <= 75) {
                  textColorId = R.color.red;
                  text1.setTextColor(textColorId);
                } else if (ratarata >= 75) {
                  textColorId = R.color.black;
                  text1.setTextColor(textColorId);
                }

             //set the tag of position
            view.setTag(position);
            return view;
          }
        };