无法调用所选 child RecycleView
Cannot call selected child RecycleView
我在 android 中创建了 RecycleView
而不是 ListView
的可扩展视图。一开始我遇到了一些问题,但现在一切正常。所以现在我正在尝试从组列表中 select child 并使用 clickListener
进行一些操作。我试过 OnChildClickListener
但这不适用于 RecycleView。唯一对我有用的代码是:
textviewitem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("child", "works");
}
});
而 textviewitem
是:Context context = parent.getContext();
final TextView textviewitem= new TextView(context);
现在的问题是,即使它有效,我也无法判断单击了哪个 child,这是个问题。
顺便说一句,我搜索了很多,看到了很多相关链接,但我找不到我的答案。
如果你想让我 post 我的整个 ViewHolder
请说出来。
编辑:
这是我的整个 ViewHolder:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type){
View view = null;
Context context = parent.getContext();
float dp = context.getResources().getDisplayMetrics().density;
int subItemPaddingLeft = (int) (18 * dp);
int subItemPaddingTopAndBottom = (int) (5 * dp);
switch (type) {
case HEADER:
LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_header, parent, false);
ListHeaderViewHolder header = new ListHeaderViewHolder(view);
return header;
case CHILD:
final TextView textviewitem = new TextView(context);
textviewitem.setPadding(subItemPaddingLeft, subItemPaddingTopAndBottom, 0, subItemPaddingTopAndBottom);
textviewitem.setTextColor(0x88000000);
textviewitem.setLayoutParams(
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
textviewitem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("child", "works");
}
});
return new RecyclerView.ViewHolder(textviewitem) {
};
}
return null;
}
您可以在 onBindViewHolder
中设置点击侦听器,或者您可以根据数据项具有的任何独特内容(即索引号、ID 等)在 TextView
上设置标签.).
在 onBindViewHolder
中,您可以:
viewHolder.itemView.setTag(myKey)
我在 android 中创建了 RecycleView
而不是 ListView
的可扩展视图。一开始我遇到了一些问题,但现在一切正常。所以现在我正在尝试从组列表中 select child 并使用 clickListener
进行一些操作。我试过 OnChildClickListener
但这不适用于 RecycleView。唯一对我有用的代码是:
textviewitem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("child", "works");
}
});
而 textviewitem
是:Context context = parent.getContext();
final TextView textviewitem= new TextView(context);
现在的问题是,即使它有效,我也无法判断单击了哪个 child,这是个问题。
顺便说一句,我搜索了很多,看到了很多相关链接,但我找不到我的答案。
如果你想让我 post 我的整个 ViewHolder
请说出来。
编辑:
这是我的整个 ViewHolder:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type){
View view = null;
Context context = parent.getContext();
float dp = context.getResources().getDisplayMetrics().density;
int subItemPaddingLeft = (int) (18 * dp);
int subItemPaddingTopAndBottom = (int) (5 * dp);
switch (type) {
case HEADER:
LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_header, parent, false);
ListHeaderViewHolder header = new ListHeaderViewHolder(view);
return header;
case CHILD:
final TextView textviewitem = new TextView(context);
textviewitem.setPadding(subItemPaddingLeft, subItemPaddingTopAndBottom, 0, subItemPaddingTopAndBottom);
textviewitem.setTextColor(0x88000000);
textviewitem.setLayoutParams(
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
textviewitem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("child", "works");
}
});
return new RecyclerView.ViewHolder(textviewitem) {
};
}
return null;
}
您可以在 onBindViewHolder
中设置点击侦听器,或者您可以根据数据项具有的任何独特内容(即索引号、ID 等)在 TextView
上设置标签.).
在 onBindViewHolder
中,您可以:
viewHolder.itemView.setTag(myKey)