随机更改列表视图项的文本视图颜色

时间:2018-10-07 20:53:14

标签: android listview random textview

我在RecyclerView中有一个ListView。 ListView可见性设置为gone。单击RecyclerView行项目后,将显示ListView。

在XML布局中,ListView行项目TextView颜色为白色。但是我想将ListView行项TextView的颜色设置为可见后,将其随机更改为灰色。

请查看下面的代码:

Recyclerview行项目XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/dark_gray">

    <RelativeLayout
        android:id="@+id/challenges_row_item"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:paddingLeft="15dp"
        android:background="@color/list_item_bg">

        <TextView
            android:id="@+id/tv_week"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="WEEK"
            android:textSize="18sp"
            android:textColor="@color/white"
            android:layout_centerVertical="true"/>

        <ImageView
            android:id="@+id/star_icon"
            android:layout_toRightOf="@+id/tv_week"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@mipmap/ic_launcher"
            android:layout_marginLeft="20dp"
            android:layout_centerVertical="true"/>

        <TextView
            android:id="@+id/tv_score"
            android:layout_toRightOf="@+id/star_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="50"
            android:textSize="18sp"
            android:textColor="@color/white"
            android:layout_marginLeft="20dp"
            android:layout_centerVertical="true"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:layout_alignParentRight="true"
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/tv_challengeCount"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textSize="18sp"
                android:textColor="@color/white"
                android:layout_centerVertical="true"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="/"
                android:textSize="18sp"
                android:textColor="@color/white"
                android:layout_centerVertical="true" />

            <TextView
                android:id="@+id/tv_total"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="7"
                android:textSize="18sp"
                android:textColor="@color/white"
                android:layout_centerVertical="true"
                android:layout_marginRight="20dp"/>

            <TextView
                android:id="@+id/tv_arrow_right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=">"
                android:textSize="18sp"
                android:textColor="@color/white"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"/>

        </LinearLayout>

    </RelativeLayout>

    <View
        android:id="@+id/challenges_bottom_border"
        android:layout_below="@+id/challenges_row_item"
        android:layout_width="match_parent"
        android:layout_height="1.5dp"
        android:background="@color/black" />

    <RelativeLayout
        android:id="@+id/challenges_sub_rel"
        android:layout_below="@+id/challenges_row_item"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone">

        <ListView
            android:id="@+id/sub_listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </ListView>

    </RelativeLayout>

</RelativeLayout>

Recyclerview onclick

在这里,我想查看ListView并根据保存在数组列表positions_list中的位置更改其TextView的颜色。

holder.challenges_row_item.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        //visible sub listview
        if(holder.challenges_sub_rel.getVisibility() == View.VISIBLE) {

            holder.challenges_sub_rel.setVisibility(View.GONE);
            //holder.tv_challengeCount.setText(String.valueOf(COUNT));
        }
        else {
            holder.challenges_sub_rel.setVisibility(View.VISIBLE);


            final String[] desc = context.getResources().getStringArray(R.array.challenges_sub_rv_desc);
            final String[] challenge_total = context.getResources().getStringArray(R.array.challenge_total);
            String[] challenge_scores = context.getResources().getStringArray(R.array.challenge_scores);

            ChallesgesSubListViewAdapter adapter = new ChallesgesSubListViewAdapter(context,
                    R.layout.challenges_sub_rv_item, desc, challenge_total, challenge_scores);
            holder.sub_listview.setAdapter(adapter);


            for(int i=0; i<holder.sub_listview.getCount(); i++) {

在这里,我要访问所有ListView行项目的内容,但它不会更新文本颜色。

        if(positions_list.get(i) <= holder.sub_listview.getLastVisiblePosition()){
            View old_view = holder.sub_listview.getChildAt(positions_list.get(i) - holder.sub_listview.getFirstVisiblePosition());

            TextView desc_tv = (TextView) old_view.findViewById(R.id.desc_tv);
            TextView challenge_count_tv = (TextView) old_view.findViewById(R.id.challenge_count_tv);
            TextView slash_tv = (TextView) old_view.findViewById(R.id.slash_tv);
            TextView challenge_total_tv = (TextView) old_view.findViewById(R.id.challenge_total_tv);
            TextView scores_tv = (TextView) old_view.findViewById(R.id.scores_tv);

            ImageView tick_icon = (ImageView) old_view.findViewById(R.id.tick_icon);

            desc_tv.setTextColor(context.getResources().getColor(R.color.gray));
            challenge_count_tv.setTextColor(context.getResources().getColor(R.color.gray));
            slash_tv.setTextColor(context.getResources().getColor(R.color.gray));
            challenge_total_tv.setTextColor(context.getResources().getColor(R.color.gray));
            scores_tv.setTextColor(context.getResources().getColor(R.color.gray));

            scores_tv.setVisibility(View.GONE);
            tick_icon.setVisibility(View.VISIBLE);

            //update count tv
            challenge_count_tv.setText(challenge_total_tv.getText());
        }
    }

请告诉我我在哪里犯错了。

0 个答案:

没有答案