Android 单击可循环查看突出显示的项目
我动态创建了以下Android 单击可循环查看突出显示的项目,android,listview,android-recyclerview,Android,Listview,Android Recyclerview,我动态创建了以下RecyclerView。我想在单击时突出显示已单击的项目。单击后,转到下一个活动。我给出了以下背景XML: hRecyclerView.setBackgroundResource(R.drawable.mylistview_background); 这不是设定它的方式吗?我在这里该怎么办 hRecyclerView = (RecyclerView) findViewById(R.id.my_history_view); // use a l
RecyclerView
。我想在单击时突出显示已单击的项目。单击后,转到下一个活动
。我给出了以下背景XML:
hRecyclerView.setBackgroundResource(R.drawable.mylistview_background);
这不是设定它的方式吗?我在这里该怎么办
hRecyclerView = (RecyclerView) findViewById(R.id.my_history_view);
// use a linear layout manager
hLayoutManager = new LinearLayoutManager(this);
hRecyclerView.setLayoutManager(hLayoutManager);
hRecyclerView.setVerticalScrollBarEnabled(false);
hRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));
hRecyclerView.setBackgroundResource(R.drawable.mylistview_background);
hAdapter = new HistoryAdapter(history, this);
hRecyclerView.setAdapter(hAdapter);
hRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// do whatever
if(position>0) {
History his = history.get(position - 1);
Intent intent = new Intent(getApplicationContext(), TrackActivity.class);
intent.putExtra("from", his.src_station);
intent.putExtra("to", his.dest_station);
intent.putExtra("train_no", his.train_no);
intent.putExtra("train_name", his.train_name);
startActivity(intent);
overridePendingTransition(R.anim.right_in, R.anim.left_out);
}
}
})
);
hRecyclerView.setItemAnimator(new DefaultItemAnimator());
mylistview_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:endColor="#22000000" android:startColor="#a7a2288f" android:angle="270" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:endColor="#2200ff00" android:startColor="#a2008f00" android:angle="270" />
</shape>
</item>
</selector>
非常感谢您的帮助 您正在设置整个RecyclerView的背景(它不会被“选中”)。您需要设置行视图的背景。在HistoryAdapter中的onCreateViewHolder中,您将膨胀行视图。这就是需要具有可绘制选择器的背景(您可以在xml或代码中进行设置) 首先删除这一行,它是针对整个recyclerview的 您的自定义行/项布局应如下所示(将mylistview_background.xml放入可绘制文件夹):
。。。
在ViewHolder类中不使用onClickListener来处理单击事件有什么原因吗?我昨天花了很多时间为这种情况想出最好的解决方案,对我来说,这样做更容易。如果有什么我不知道的,请告诉我。
hRecyclerView.setBackgroundResource(R.drawable.mylistview_background);
<RelativeLayout ...
android:background="@drawable/mylistview_background">...
</RelativeLayout>