我在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());
}
}
请告诉我我在哪里犯错了。