คำถามติดแท็ก android-recyclerview

วิดเจ็ต RecyclerView เป็น ListView และ GridView เวอร์ชันขั้นสูงและยืดหยุ่นขึ้น

8
Margin / padding ใน Child คนสุดท้ายใน RecyclerView
ฉันกำลังพยายามเพิ่ม Padding / Margin Bottom ในแถวสุดท้ายและ Padding / Margin Top ในแถวแรก ฉันไม่สามารถทำได้ในรายการ xml เพราะมันจะส่งผลต่อ Childs ทั้งหมดของฉัน ฉันมีส่วนหัวและส่วนล่างใน RecyclerView Adapter ของฉันดังนั้นฉันจึงไม่สามารถใช้ไฟล์ android:padding="4dp" android:clipToPadding="false" ฉันต้องใช้ทีละแถวในแถวแรกสุดของแต่ละส่วนหัว

12
RecyclerView - จะเลื่อนไปด้านบนของรายการในตำแหน่งใดตำแหน่งหนึ่งอย่างราบรื่นได้อย่างไร?
ใน RecyclerView ฉันสามารถเลื่อนไปที่ด้านบนของรายการที่เลือกโดยใช้: ((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(position, 0); แต่นี้ทันทีย้ายรายการไปที่ตำแหน่งด้านบน ฉันต้องการที่จะย้ายไปยังด้านบนของรายการได้อย่างราบรื่น ฉันได้ลองแล้ว: recyclerView.smoothScrollToPosition(position); แต่ทำงานได้ไม่ดีเนื่องจากไม่ย้ายรายการไปยังตำแหน่งที่เลือกไว้ด้านบน เพียงแค่เลื่อนรายการจนกว่าจะมองเห็นรายการในตำแหน่งนั้น

6
มุมมองรีไซเคิลแสดงรายการเดียว
ฉันพบข้อผิดพลาดแปลก ๆ ที่การดูรีไซเคิลแสดงเพียงรายการเดียว ด้านล่างนี้เป็นรหัสสำหรับอะแดปเตอร์รีไซเคิลของฉัน: 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 = …

10
การรีไซเคิลและการจัดการอัตราเงินเฟ้อของแถวประเภทต่างๆ
ฉันพยายามทำงานกับสิ่งใหม่RecyclerViewแต่ไม่พบตัวอย่างRecyclerViewของแถว / มุมมองการ์ดประเภทต่างๆที่สูงเกินจริง เมื่อListViewฉันแทนที่getViewTypeCountและgetItemViewTypeสำหรับการจัดการแถวประเภทต่างๆ ฉันควรจะทำเหมือนวิธี "เก่า" หรือฉันควรทำอะไรกับLayoutManager? ฉันสงสัยว่าจะมีใครชี้ทางที่ถูกต้องให้ฉันได้ไหม เพราะฉันสามารถหาตัวอย่างได้เพียงประเภทเดียว ฉันต้องการมีรายชื่อการ์ดที่แตกต่างกันเล็กน้อย ฉันควรหรือเพียงแค่ใช้scrollViewกับcardViewsภายในของมัน ... ให้มันได้โดยไม่ต้องอะแดปเตอร์และrecyclerView?

2
ลบเอฟเฟกต์การเลื่อน RecyclerView
ฉันมีสอง RecyclerViewในNavigationDrawerไฟล์. ทั้งสองมีเอฟเฟกต์เลื่อนสีน้ำเงิน ฉันจะลบเอฟเฟกต์นี้ในทั้งสองไฟล์ได้อย่างไร RecyclerViewsอย่างไร ฉันพยายามเปลี่ยน: mRecyclerView.setHasFixedSize(true);ถึงfalseแต่มันลบเอฟเฟกต์การเลื่อน (วิธีนี้มีผลอย่างไร?)

13
Android 5.0 - เพิ่มส่วนหัว / ส่วนท้ายให้กับ RecyclerView
ฉันใช้เวลาสักครู่ในการพยายามหาวิธีเพิ่มส่วนหัวให้กับ a RecyclerViewไม่สำเร็จ นี่คือสิ่งที่ฉันได้รับจนถึงตอนนี้: @Override protected void onCreate(Bundle savedInstanceState) { ... layouManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layouManager); LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); headerPlaceHolder = inflater.inflate(R.layout.view_header_holder_medium, null, false); layouManager.addView(headerPlaceHolder, 0); ... } LayoutManagerดูเหมือนว่าจะจัดการวัตถุจำหน่ายของRecyclerViewรายการ ขณะที่ผมไม่สามารถหาใด ๆaddHeaderView(View view)วิธีฉันตัดสินใจที่จะไปกับLayoutManager's addView(View view, int position)วิธีการและเพื่อเพิ่มมุมมองที่ส่วนหัวของฉันในตำแหน่งแรกที่จะทำหน้าที่เป็นส่วนหัว และนี่คือสิ่งที่น่าเกลียด: java.lang.NullPointerException: Attempt to read from field 'android.support.v7.widget.RecyclerView$ViewHolder android.support.v7.widget.RecyclerView$LayoutParams.mViewHolder' on a null …

10
CardView layout_width =“ match_parent” ไม่ตรงกับความกว้างของ RecyclerView หลัก
ฉันมีส่วนที่มี RecyclerView พร้อม layout_width = "match_parent": <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity$PlaceholderFragment" /> รายการใน RecyclerView คือ CardView ที่มี layout_width = "match_parent": <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_gravity="center" android:id="@+id/info_text" android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:textAppearance="?android:textAppearanceLarge"/> </android.support.v7.widget.CardView> ฉันขยายมุมมองรายการดังต่อไปนี้: public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) …

9
ฉันจะสร้างส่วนหัวแบบเหนียวใน RecyclerView ได้อย่างไร (ไม่มี lib ภายนอก)
ฉันต้องการแก้ไขมุมมองส่วนหัวที่ด้านบนของหน้าจอเหมือนในภาพด้านล่างและไม่ใช้ไลบรารีภายนอก ในกรณีของฉันฉันไม่ต้องการทำตามตัวอักษร ฉันมีมุมมองสองประเภทที่แตกต่างกัน (ส่วนหัวและปกติ) ฉันต้องการแก้ไขเฉพาะด้านบนส่วนหัวสุดท้ายเท่านั้น

5
ปัดเพื่อปิดสำหรับ RecyclerView [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันเคยใช้ไลบรารีSwipeToDismissแต่ตอนนี้ฉันกำลังพยายามย้ายไปที่ RecyclerView และสิ่งต่าง ๆ ก็ไม่ชัดเจนคุณรู้หรือไม่ว่ามีการแทนที่ lib นี้หรือไม่ มีความคิดอย่างไรในการใช้งานตั้งแต่เริ่มต้น?

27
RecyclerView ขัดข้องเมื่อ“ มุมมองที่ถูกทิ้งหรือแนบมาอาจไม่สามารถรีไซเคิลได้”
ฉันใช้การใช้งานง่าย ๆ ที่RecyclerViewนำมาจากเว็บไซต์ Android โดยใช้ a StaggeredGridLayoutManagerและฉันได้รับข้อผิดพลาดนี้ทำให้แอปของฉันขัดข้อง: java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3501) at android.support.v7.widget.RecyclerView$LayoutManager.scrapOrRecycleView(RecyclerView.java:5355) at android.support.v7.widget.RecyclerView$LayoutManager.detachAndScrapAttachedViews(RecyclerView.java:5340) at android.support.v7.widget.StaggeredGridLayoutManager.onLayoutChildren(StaggeredGridLayoutManager.java:572) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1918) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2155) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14008) …

3
เพิ่มรายการใหม่ในการรีไซเคิลดูแบบเป็นโปรแกรมหรือไม่
ฉันยังคงพยายามมองไปที่มุมมองรีไซเคิล ฉันมีรายการอาร์เรย์ที่ฉันใช้เพื่อเริ่มต้นมุมมองรีไซเคิลด้วย ฉันจะเพิ่มรายการใหม่ไปยังโพสต์มุมมองรีไซเคิลที่ตั้งค่าอะแดปเตอร์และเค้าโครงได้อย่างไร private void initData() { mItems = new ArrayList<String>(); for (int i = 0; i < ITEMS_COUNT; i++) { mItems.add("Item " + (i + 1)); } } private void initRecyclerView() { mRecentRecyclerView = (RecyclerView) findViewById(R.id.recentrecyclerView); mRecentRecyclerView.setHasFixedSize(true); mRecentLayoutManager = new LinearLayoutManager(this); mRecentRecyclerView.setLayoutManager(mRecentLayoutManager); mAdapter = new RecyclerView.Adapter<CustomViewHolder>() { @Override public …

17
RecyclerView กะพริบหลังจากแจ้งเตือน
ฉันมี RecyclerView ซึ่งโหลดข้อมูลบางส่วนจาก API รวมถึง URL รูปภาพและข้อมูลบางส่วนและฉันใช้ networkImageView เพื่อโหลดรูปภาพ @Override public void onResponse(List<Item> response) { mItems.clear(); for (Item item : response) { mItems.add(item); } mAdapter.notifyDataSetChanged(); mSwipeRefreshLayout.setRefreshing(false); } นี่คือการใช้งานสำหรับ Adapter: public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { if (isHeader(position)) { return; } // - get element from your dataset at …

13
วิธีอัปเดต / รีเฟรชรายการเฉพาะใน RecyclerView
RecyclerViewฉันพยายามที่จะรีเฟรชรายการที่ระบุใน เรื่อง:AlertDialogเมื่อใดก็ตามที่ผู้ใช้คลิกที่รายการก็แสดงให้เห็นว่า ผู้ใช้สามารถพิมพ์ข้อความได้โดยคลิกปุ่มตกลง ฉันต้องการแสดงข้อความนี้ในรายการนี้และแสดงการล่องหนImageView- ประกาศใน XML และอะแดปเตอร์ViewHolder- ฉันใช้ฟังก์ชันนี้ในAlertDialogปุ่มบวกเพื่ออัปเดตรายการ: 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); } แต่โค้ดนี้ไม่เพียง แต่เปลี่ยน itemView ที่ตำแหน่งที่ส่งผ่านเท่านั้น แต่ยังเปลี่ยน itemView อื่น ๆ บางส่วนด้วย! ฉันจะเปลี่ยน itemView เฉพาะอย่างถูกต้องได้อย่างไรโดยคลิกที่มัน

12
RecyclerView GridLayoutManager: วิธีตรวจจับการนับสแปนอัตโนมัติ
การใช้ GridLayoutManager ใหม่: https://developer.android.com/reference/android/support/v7/widget/GridLayoutManager.html ต้องใช้การนับช่วงที่ชัดเจนดังนั้นปัญหาจึงกลายเป็น: คุณจะรู้ได้อย่างไรว่า "ช่วง" พอดีต่อแถว? นี่คือเส้นตารางหลังจากทั้งหมด ควรมีระยะห่างมากที่สุดเท่าที่ RecyclerView จะใส่ได้ตามความกว้างที่วัดได้ เมื่อใช้แบบเก่าGridViewคุณจะตั้งค่าคุณสมบัติ "columnWidth" และจะตรวจหาจำนวนคอลัมน์ที่พอดีโดยอัตโนมัติ นี่คือสิ่งที่ฉันต้องการทำซ้ำสำหรับ RecyclerView: เพิ่ม OnLayoutChangeListener บนไฟล์ RecyclerView ในการเรียกกลับนี้ขยาย 'รายการตาราง' รายการเดียวแล้ววัดผล spanCount = รีไซเคิลViewWidth / singleItemWidth; ดูเหมือนว่าจะเป็นพฤติกรรมทั่วไปดังนั้นมีวิธีที่ง่ายกว่าที่ฉันไม่เห็นหรือไม่?

17
จะบันทึกตำแหน่งการเลื่อนของ RecyclerView โดยใช้ RecyclerView.State ได้อย่างไร
ฉันมีคำถามเกี่ยวกับ Android ของRecyclerView.State ฉันใช้ RecyclerView ฉันจะใช้และเชื่อมโยงกับ RecyclerView.State ได้อย่างไร จุดประสงค์ของฉันคือการบันทึกเลื่อนตำแหน่ง RecyclerView ของ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.