我正在尝试在选定项目时更改我的NavigationDrawer中的textColor。我正在使用RecyclerView作为我的滑动布局。这是基于以下教程:http://www.androidhive.info/2015/04/android-getting-started-with-material-design/。有人可以提供解决方案吗?谢谢提前。
public class NavigationDrawerAdapter extends RecyclerView.Adapter<NavigationDrawerAdapter.MyViewHolder> {
public static int selected_item = 0;
...
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
NavDrawerItem current = data.get(position);
holder.title.setText(current.getTitle());
if(position == selected_item)
{
holder.title.setTextColor(Color.RED);
}
else
{
holder.title.setTextColor(Color.BLACK);
}
}
...
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
NavigationDrawerAdapter.selected_item = position;
recyclerView.getAdapter().notifyDataSetChanged();
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}
...
}));
...
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflating view layout
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
adapter = new NavigationDrawerAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
view.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
((TextView) view.findViewById(R.id.title)).setTextColor(getResources().getColor(R.color.material_blue_grey_800));
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
view.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
((TextView) view.findViewById(R.id.title)).setTextColor(getResources().getColor(R.color.material_blue_grey_800));
public class MainActivity extends AppCompatActivity {
.......
adapter.setOnItemClickLister(new MenuAdapter.OnItemSelecteListener() {
View selectedView;
@Override
public void onItemSelected(View v, int position) {
if(selectedView != null)
selectedView.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.defaultColor));
v.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.orange));
selectedView = v;
}
});
}