我正在探索RecyclerView,我很惊讶地看到RecyclerView它没有onItemClickListener().因为RecyclerView延伸
android.view.ViewGroup
并ListView扩展
android.widget.AbsListView
.不过,我解决我的问题写onClick在我的RecyclerView.Adapter:
public static class ViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
public TextView txtViewTitle;
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
}
@Override
public void onClick(View v) {
}
}
Run Code Online (Sandbox Code Playgroud)
但我仍然想知道为什么谷歌被删除了onItemClickListener()?
是否有性能问题或其他问题?
由于新的支持库版本(22.x暂时)的getPosition()的方法RecyclerView.ViewHolder类已被否决代替的主题中提到的方法.我并没有真正理解阅读文档.有人可以解释外行人的条款差异吗?
我有以下用例 - 我给我的适配器a List,并且还希望能够为每个列表项关联额外信息.我有一个位置到额外的映射,并且映射可供持有者使用,以便他们可以获取额外的位置并用它做事.在持有人中,我应该使用哪种方法?
当指数0和1的列表项切换位置时,持有者位置会发生什么?这些方法返回了什么?
我有RecyclerView一些view's/card(我现在称它为视图),它们都包含相同的东西,包括View我用作分隔条的东西.
我希望能够view在当前的上面更改此分隔栏的属性.所以说我点击说明的卡片test3,我希望能够设置分隔栏的属性test2 view.
我只需要参考上面ViewHolder的视图(或任何其他的)我点击的那个,就是全部.我该怎么做?
public class StuffManagerAdapter extends RecyclerView.Adapter<StuffManagerAdapter.MyViewHolder> {
private List<StuffManagerClass> stuffList;
private Context context;
private String TAG = "CStA";
DBHandler dbHandler;
ArrayList<String> tagArray = new ArrayList<>();
RecyclerView mRecyclerView;
public StuffManagerAdapter(List<StuffManagerClass> stuffList, Context context) {
this.stuffList = stuffList;
this.context = context;
dbHandler = DBHandler.getInstance(context);
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView DeviceTV, NameTV, TagTV;
private ImageButton editButton, deleteButton;
public …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取RecyclerView中第一个可见项目的位置,因为我需要一些关于它的信息(例如标题).不幸的是,当我使用LayoutManager.findFirstVisibleItemPosition()它时,它总是返回0.此外,我的RecyclerView位于NestedScrollView中.所有这些项目都在PageAdapter(TabLayout)中.这是我设置RecyclerView的两种方法:
private void initializeAdapter() {
NaBiezacoAktualnosciAdapter adapter = new NaBiezacoAktualnosciAdapter(items, getContext());
recyclerView.setAdapter(adapter);
}
private void initializeLayoutManager(final View v) {
final ExpansiveLayoutManager llm = new ExpansiveLayoutManager(getActivity());
recyclerView.setLayoutManager(llm);
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setHasFixedSize(true);
recyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(getContext(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
}
})
);
NestedScrollView nestedScrollView = (NestedScrollView) v.findViewById(R.id.nested);
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
int firstVisibleCard = llm.findFirstCompletelyVisibleItemPosition();
int lastVisibleCard = llm.findLastCompletelyVisibleItemPosition();
Log.d("aaaa", "firstVisibleCard= " …Run Code Online (Sandbox Code Playgroud) 我使用 RecyclerView 并对其进行了过滤,但我遇到了问题
在我搜索后,当我按下项目时,我得到了错误的位置,而不是我搜索到的位置,请帮我解决这个问题
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
Context context;
List<listitem_gib> getDataAdapter;
public RecyclerViewAdapter(List<listitem_gib> getDataAdapter, Context context){
super();
this.getDataAdapter = getDataAdapter;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(v,context,getDataAdapter);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
listitem_gib getDataAdapter1 = getDataAdapter.get(position);
holder.name.setText(getDataAdapter1.getName());
holder.num.setText(getDataAdapter1.getnum());
Picasso.with(context).load("http://i-geeky.info/android/image/" + getDataAdapter1.getimg()).into(holder.img1);
}
@Override
public int getItemCount() {
return getDataAdapter.size();
}
class …Run Code Online (Sandbox Code Playgroud) 我想在我的项目上添加点击监听器,RecyclerView这样当我点击某个项目时,它会启动一个新项目Intent并从 Web 服务器检索有关该项目的数据。我尝试了很多建议,但没有一个有帮助。
我的 RecylerView 类
public class GetPrice extends AppCompatActivity {
private RecyclerView recyclerView;
private GridLayoutManager gridLayoutManager;
private CustomAdapter adapter;
private List<MyData> dataList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.getpricerecycle);
recyclerView =(RecyclerView) findViewById(R.id.recycler_view);
dataList = new ArrayList<>();
load_data_from_server(0);
gridLayoutManager = new GridLayoutManager(this,1);
recyclerView.setLayoutManager(gridLayoutManager);
adapter = new CustomAdapter(this,dataList);
recyclerView.setAdapter(adapter);
}
private void load_data_from_server(final int id) {
AsyncTask<Integer,Void,Void> task = new AsyncTask<Integer, Void, Void>() {
@Override
protected Void doInBackground(Integer... params) {
OkHttpClient client = new …Run Code Online (Sandbox Code Playgroud)