标签: recycler-adapter

Android Recyclerview GridLayoutManager列间距

如何使用GridLayoutManager使用RecyclerView设置列间距?在我的布局中设置边距/填充无效.

android gridview gridlayoutmanager recycler-adapter android-recyclerview

221
推荐指数
12
解决办法
20万
查看次数

recyclerview没有连接适配器; 跳过布局

刚刚在我的代码中实现了Recyclerview,取代了Listview.

一切正常.显示对象.

但是logcat说

15:25:53.476 E/RecyclerView:没有连接适配器; 跳过布局

15:25:53.655 E/RecyclerView:没有连接适配器; 跳过布局

代码

ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);
recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经为Recycleview附加了一个适配器.那为什么我一直收到这个错误?

我已经阅读了与同一问题相关的其他问题但没有帮助.

android recycler-adapter android-recyclerview

213
推荐指数
9
解决办法
28万
查看次数

RecyclerView展开/折叠项目

我想扩展/折叠我的recyclerView的项目,以显示更多信息.我想实现SlideExpandableListView的相同效果.

基本上在我的viewHolder中我有一个不可见的视图,我想做一个平滑的展开/折叠动画,而不是只将可见性设置为VISIBLE/GONE.我一次只需要一个项目进行扩展,如果有一个高程来显示该项目已被选中,那将会很酷.

它与新Android最近通话记录列表的效果相同.选项"CALL BACK"和"DETAILS"仅在选择项目时可见.

RecyclerView可扩展项目

expand android android-layout recycler-adapter android-recyclerview

137
推荐指数
7
解决办法
14万
查看次数

如何在RecyclerView上正确突出显示所选项目?

我正在尝试使用a RecyclerView作为横向ListView.我试图弄清楚如何突出显示所选项目.当我点击其中一个项目时,它会被选中并正确突出显示,但是当我点击另一个项目时,第二个项目会被旧项目突出显示.

这是我的onClick函数:

@Override
public void onClick(View view) {

    if(selectedListItem!=null){
        Log.d(TAG, "selectedListItem " + getPosition() + " " + item);
        selectedListItem.setBackgroundColor(Color.RED);
    }
    Log.d(TAG, "onClick " + getPosition() + " " + item);
    viewHolderListener.onIndexChanged(getPosition());
    selectedPosition = getPosition();
    view.setBackgroundColor(Color.CYAN); 
    selectedListItem = view;
}
Run Code Online (Sandbox Code Playgroud)

这是onBindViewHolder:

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {   
    viewHolder.setItem(fruitsData[position]);
    if(selectedPosition == position)
        viewHolder.itemView.setBackgroundColor(Color.CYAN);    
    else
        viewHolder.itemView.setBackgroundColor(Color.RED);

}
Run Code Online (Sandbox Code Playgroud)

android recycler-adapter android-recyclerview

131
推荐指数
6
解决办法
17万
查看次数

显示单一项目的Recycler视图

我面临一个奇怪的错误,其中recyclerview只显示一个项目.以下是我的recyclerview适配器的代码:

public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {


List<chat> chats;
String username;
final int My=0,Their=1;

public ChatAdapter(List<chat> chats) {
    this.chats = chats;
    this.username = PushApp.getApp().getSPF().getStringData(Constants.ANAME);
}


@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    RecyclerView.ViewHolder viewHolder;
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());

    switch (viewType) {
        case My:
            View v1 = inflater.inflate(R.layout.my_chat_child, parent, false);
            viewHolder = new MyChatHolder(v1);
            break;
        case Their:
            View v2 = inflater.inflate(R.layout.their_chat_child, parent, false);
            viewHolder = new TheirMessageHolder(v2);
            break;
        default:
            View v = inflater.inflate(R.layout.my_chat_child, parent, false);
            viewHolder = new MyChatHolder(v);
            break; …
Run Code Online (Sandbox Code Playgroud)

android recycler-adapter android-recyclerview

113
推荐指数
3
解决办法
4万
查看次数

如何在RecyclerView中更新/刷新特定项目

我正在尝试刷新特定项目RecyclerView.

故事:每当用户点击项目时,它都会显示AlertDialog.用户可以通过单击确定按钮键入一些文本.我想在这个项目中显示这个文本并显示不可见ImageView- 在XML和适配器中声明ViewHolder-

我在AlertDialogPositive Button中使用此函数来更新项目:

private void updateListItem(int position) {
  View view = layoutManager.findViewByPosition(position);
  ImageView medicineSelected = (ImageView) view.findViewById(R.id.medicine_selected);
  medicineSelected.setVisibility(View.VISIBLE);
  TextView orderQuantity = (TextView) view.findViewById(R.id.order_quantity);
  orderQuantity.setVisibility(View.VISIBLE);
  orderQuantity.setText(quantity + " packet added!");

  medicinesArrayAdapter.notifyItemChanged(position);
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码不仅改变了传递位置的itemView,还改变了其他一些itemView(s)!

如何通过单击更改特定的itemView?

android android-adapter recycler-adapter android-recyclerview

96
推荐指数
5
解决办法
15万
查看次数

获取已点击的项目及其在RecyclerView中的位置

我正在替换我ListViewRecyclerView,列表显示确定,但我想知道如何获得点击项目及其位置,类似于OnItemClickListener.onItemClick(AdapterView parent, View v, int position, long id)我们使用的方法ListView.

谢谢你的想法!

android listview recycler-adapter android-recyclerview

94
推荐指数
6
解决办法
20万
查看次数

在RecyclerView中等效ListView.setEmptyView

RecyclerView,我想设置一个空视图,以便在适配器为空时显示.有相同的ListView.setEmptyView()吗?

android recycler-adapter android-recyclerview

86
推荐指数
4
解决办法
4万
查看次数

RecyclerView滚动性能

我基于创建列表和卡片指南创建了RecyclerView示例.我的适配器只有一个模式实现来扩展布局.

问题是滚动性能差.这在RecycleView中只有8个项目.

在一些测试中我验证了在Android L中没有出现这个问题.但在KitKat版本中,性能的下降是显而易见的.

java performance android recycler-adapter android-recyclerview

68
推荐指数
6
解决办法
5万
查看次数

Recycler View:检测到不一致.视图持有者适配器positionViewHolder无效

Recycler View Inconsistency检测到错误,在加载更多项目时快速滚动或滚动时出现错误.

FATAL EXCEPTION: main
Process: com.pratap.endlessrecyclerview, PID: 21997
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{56a082c position=40 id=-1, oldPos=39, pLpos:39 scrap [attachedScrap] tmpDetached no parent}
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:4251)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4382)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2864)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1445)
at android.support.v7.widget.RecyclerView.access$400(RecyclerView.java:144)
at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:282)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Run Code Online (Sandbox Code Playgroud)

适配器

public class DataAdapter extends RecyclerView.Adapter {
    private …
Run Code Online (Sandbox Code Playgroud)

recycler-adapter android-recyclerview

55
推荐指数
5
解决办法
4万
查看次数