请仔细研究一下,让我知道出了什么问题.
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private ItemData[] itemsData;
public MyAdapter(ItemData[] itemsData) {
this.itemsData = itemsData;
}
public MyAdapter(String[] titles, int[] icons, String name, String email, int profile) {}
// Create new views (invoked by the layout manager)
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.tab1list, null);
// create ViewHolder
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) { …Run Code Online (Sandbox Code Playgroud) 我正在使用RecyclerView来显示数据.但是,当我尝试在onBindViewHolder()方法中绑定数据时,我收到以下错误...
09-12 16:37:51.217 2166-2166/com.zaptech.databasedemowithrecycler E/AndroidRuntime? FATAL EXCEPTION: main
android.content.res.Resources$NotFoundException: String resource ID #0x17
at android.content.res.Resources.getText(Resources.java:230)
at android.widget.TextView.setText(TextView.java:3769)
at com.zaptech.databasedemowithrecycler.adapter.MyEmployeeAdapter.onBindViewHolder(MyEmployeeAdapter.java:47)
at com.zaptech.databasedemowithrecycler.adapter.MyEmployeeAdapter.onBindViewHolder(MyEmployeeAdapter.java:24)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5277)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5310)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4568)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4461)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1962)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1371)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1334)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:563)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145)
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.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:493)
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.LinearLayout.setChildFrame(LinearLayout.java:1663)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14008)
at android.view.ViewGroup.layout(ViewGroup.java:4373)
at …Run Code Online (Sandbox Code Playgroud) 我有一个回收站视图,我想点击其中一个项目.
这是我的代码:
mRecyclerView.findViewHolderForAdapterPosition(2).itemView.performClick();
Run Code Online (Sandbox Code Playgroud)
当项目可见时,它工作正常,但当它不可见时,我得到一个空指针异常
我也尝试在执行点击之前滚动到位置,但我得到了相同的结果
有关如何解决这个问题的任何想法?
我一直在制作一个使用RecyclerView的应用程序,但它没有显示任何内容..为什么没有显示RecyclerView的内容。我的代码如下
item_contact.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingTop="10dp">
<TextView
android:id="@+id/contact_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/message_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textSize="10sp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
ContactsAdaptor.java
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import java.util.List;
public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ViewHolder> {
private List<Contact> mContacts;
public ContactsAdapter(List<Contact> contacts) {
mContacts = contacts;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View contactView = inflater.inflate(R.layout.item_contact, parent, false); …Run Code Online (Sandbox Code Playgroud) android android-layout recycler-adapter android-recyclerview
我试图在Fragment中使用建议(过滤器)实现SearchView,但我还没有管理它.我几乎尝试了每个教程,但没有任何方法适合我.我将不胜感激任何帮助.谢谢
XML ......
<!--appBar layout-->
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<!--searchView layout-->
<android.support.v7.widget.SearchView
android:id="@+id/search_view"
app:layout_scrollFlags="scroll|enterAlways"
android:iconifiedByDefault="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:closeIcon="@drawable/ic_clear_white_18dp"
app:searchIcon="@drawable/ic_search_white_24dp"
app:queryHint="@string/search_contact"
app:iconifiedByDefault="false"
android:background="@color/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</android.support.design.widget.AppBarLayout>
<!-- recycler view-->
<android.support.v7.widget.RecyclerView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
分段
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_contact_list, container, false);
searchView = (SearchView)view.findViewById(R.id.search_view);
fabButton = (FloatingActionButton)view.findViewById(R.id.fab_button);
//recycler view
recyclerView = (RecyclerView)view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
contacts = SugarRecord.listAll(Contact.class);
contactsAdapter = new ContactsAdapter(getActivity(), contacts);
recyclerView.setAdapter(contactsAdapter);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override …Run Code Online (Sandbox Code Playgroud) android adapter searchview recycler-adapter android-recyclerview
我一直试图在过去两天内设置一个RecyclerView,其中大部分似乎按预期工作.但是,每当我尝试运行我的应用程序时,它都会发生致命的异常崩溃:
E/AndroidRuntime:FATAL EXCEPTION:main进程:com.mad.exercise5,PID:16634 android.content.res.Resources $ NotFoundException:android.content.res.Resources.getText中的字符串资源ID#0x1(Resources.java:342 )在android.widget.TextView.setText(TextView.java:4244)的android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52)at (...)
我一直在关注YouTube的幻灯片教程,第1-4部分.在教程的上下文中,RecyclerView正在一个片段中设置,我还没有进入.为了防止错误来自在主活动中创建RecyclerView,我也尝试在StackTips上学习教程.
尽我所能,我已经能够通过注释掉设置布局管理器(mRecyclerView.setLayoutManager(new LinearLayoutManager(this));)的行来停止错误,但错误似乎来自于onBindViewHolder.具体来说,将文本设置为我的ViewHolder TextViews.
谷歌搜索错误,并进行一些研究,我发现很多情况下,其他问题和问题突然出现此错误.但是,问题似乎总是用户正在调用资源,而是直接将其作为id引用.也就是说,他们会使用' String string = R.string.string'代替' String string = getString(R.string.string)'.我已经三次检查我的标准资源实现,并且我相信我没有错过任何东西.至于教程让我相信,我正确地实例化我的TextViews,正确的实现findViewById.主要活动上下文在初始化时传递,因此找到相关的ID应该没有问题.
为什么我在RecyclerView示例活动中收到了Resources $ NotFoundException?两个相关的java类如下:
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ArrayList<Train> mTrains;
private TrainAdapter mTrainAdapter;
private RecyclerView mRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the Recycler View
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mTrains = FillTrainData();
mTrainAdapter = new …Run Code Online (Sandbox Code Playgroud) java android compiler-errors recycler-adapter android-recyclerview
我有一个RecyclerView(ytRC),在该RecyclerView中,每个元素都有一个缩略图和一个相应的标题,该标题通过适配器(ResultsAdapter)进入RecyclerView内部,该适配器将缩略图和标题放入cardview中。我想使cardview中的标题变成一行,这很容易。但是,有些标题过长,因此无法使用。我认为选取框文本视图将是解决此问题的好方法,因此我开始寻找解决方案。
我发现了一些成果,如这个和这个。但是,这些解决方案仅能部分起作用,这意味着RecyclerView中的50个元素中只有1个实际滚动了,这取决于它们的长度。我认为发生这种情况是因为我正在调用,title.setEnabled(true);并且title.requestFocus();使用的onBindViewHolder()方法,ResultsAdapter并且仅当在RecyclerView中生成唯一的某个视图时,文本才被破坏。
我想尝试的另一个解决方案是创建一个自定义TextView类ScrollingTextView:
import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
public class ScrollingTextView extends android.support.v7.widget.AppCompatTextView {
public ScrollingTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public ScrollingTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
//set scrolling
setSelected(true);
requestFocus();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用该类将产生相同的结果。那么,我该如何在每个文本太多的RecyclerView元素中将textview框起来?
我有一个RecyclerView内部NestedScrollView显示异步下载的一些数据.问题是当项目被启动时存在显着的滞后.经过一些测试后,我发现问题是每个项目都调用onCreateViewHolder,并且需要一些时间来扩充布局.这是我的适配器:
public class EpisodeAdapter extends RecyclerView.Adapter<EpisodeAdapter.ViewHolder> {
private static final String TAG = "EpisodeAdapter";
private static final int NO_POSITION = -1;
private static final int EXPAND = 1;
private static final int COLLAPSE = 2;
private SparseArray<Episode> episodes;
private OnItemClickListener<Episode> downloadClickListener;
private OnItemClickListener<Episode> playClickListener;
private RecyclerView recyclerView;
private final EpisodeAnimator episodeAnimator;
private final Transition expandCollapse;
private int expandedPosition = NO_POSITION;
public EpisodeAdapter() {
episodes = new SparseArray<>();
episodeAnimator = new EpisodeAnimator();
expandCollapse = new AutoTransition();
} …Run Code Online (Sandbox Code Playgroud) android android-adapter recycler-adapter android-recyclerview
我正在尝试创建扩展功能以为回收站视图适配器创建视图持有者对象
inline fun <reified T: RecyclerView.ViewHolder> ViewGroup.createViewHolder(@LayoutRes res: Int): T {
val inflater = LayoutInflater.from(context)
val itemView = inflater.inflate(res, this, false)
// return ViewHolder Object
}
Run Code Online (Sandbox Code Playgroud)
如何创建扩展RecyclerView.ViewHolder的T类型的对象,以便可以从函数返回。
android kotlin recycler-adapter kotlin-extension kotlin-reified-type-parameters
我有两种具有不同属性的不同类型的对象(例如:User和Student)。
用户:标题,描述;学生:标题,描述,USN;
有没有一种方法可以使用相同的适配器在回收者视图中首先显示两个用户,然后显示学生?即使是两个适配器,如何显示它。我不想要两个回收者视图。
请注意,给出的示例非常简单。更改不只是在UI中。如果更改仅在UI中,则可以使用getItemViewType(),但此处的更改在模型本身中。
清单和清单
我们如何将两个列表都设置为同一适配器?
model-view-controller android recycler-adapter android-recyclerview recyclerview-layout
android ×10
recycler-adapter ×10
adapter ×1
java ×1
kotlin ×1
kotlin-reified-type-parameters ×1
searchview ×1
textview ×1