因此,当我添加一个项目时,它不会为其设置动画,也不会滚动到正确的位置.但是,当我删除某些内容时,它将为对象移除设置动画.
这是添加代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == NEWITEMREQUESTCODE && resultCode == Activity.RESULT_OK) {
// AFTER CREATING A NEW ITEM
OilChangeableItem oilChangeableItem = data.getParcelableExtra("oil_item");
// Add the new item and notify the dataset.
oilChangeableAdapter.notifyItemInserted(0);
items.add(0, oilChangeableItem);
} else if (requestCode == EDITITEMRESULTCODE && resultCode == Activity.RESULT_OK) {
// AFTER EDITING AN ITEM
OilChangeableItem oilChangeableItem = data.getParcelableExtra("oil_item");
// Replace the existing item at whatever position it was originally at and notify the …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我需要启动RecyclerAdapter.class并等待结果,但我不能写行setResult并完成:
public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView title;
ImageView icon;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.list_title);
icon = (ImageView) itemView.findViewById(R.id.list_item);
icon.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String selectedCountry;
int country = getPosition();
String ololo = Integer.toString(country);
Log.i("WORKS" ,"??????? ?????? ??? ???????" +ololo);
switch (getPosition()) {
case 0:
selectedCountry = "ukr";
Log.i ("1" ,"" +selectedCountry);
Intent intent= new Intent();
intent.putExtra("country", selectedCountry);
break;
case 1:
selectedCountry = "by";
Log.i ("1" ,"" …Run Code Online (Sandbox Code Playgroud) 我有一个包含CardView列表的RecyclerView,其中包含从服务器提取的信息,有些卡只有背景颜色,但有些卡包含背景图像.如果卡片都只有背景颜色,则RecyclerView会相应地运行(我也可以设置边距和圆角半径).但是,如果任何一张卡包含背景图像,当我尝试向上/向下滚动列表时会发生崩溃(尽管背景图像将加载而没有先前设置的角半径).
这是崩溃日志:
java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.support.v7.widget.RoundRectDrawable
at android.support.v7.widget.CardViewApi21.setBackgroundColor(CardViewApi21.java:107)
at android.support.v7.widget.CardView.setCardBackgroundColor(CardView.java:234)
at co.roverlabs.sdk.ui.CardListAdapter.onBindViewHolder(CardListAdapter.java:88)
at co.roverlabs.sdk.ui.CardListAdapter.onBindViewHolder(CardListAdapter.java:28)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:4402)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3717)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3609)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1859)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1311)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1274)
at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1102)
at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:959)
at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:3062)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:549)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)
这是我的onBindViewHolder()方法(简化了硬编码值以便于阅读):
public void onBindViewHolder(final CardViewHolder holder, int position) {
//Set margins
CardView.LayoutParams cardLayoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 2000);
cardLayoutParams.setMargins(20, 20, 20, …Run Code Online (Sandbox Code Playgroud) java android android-cardview recycler-adapter android-recyclerview
我在Recycler视图android中发现了类似问题的Facebook原生广告,但在与自定义广告的集成方面遇到了一些问题.
对于我试图描述的第一个NativeAdsManager:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
manager = new NativeAdsManager(getActivity(), "892769720837476_892772047503910", 5);
manager.setListener(this);
manager.loadAds();
nativeAd = new NativeAd(getActivity(), "892769720837476_892772047503910");
nativeAd.setAdListener(this);
nativeAd.loadAd();
...
}
Run Code Online (Sandbox Code Playgroud)
然后我Native ad作为参数包含在RecyclerAdapter构造函数中:
adapter = new RecyclerAdapter(foodDataList, getActivity(), nativeAd);
Run Code Online (Sandbox Code Playgroud)
在这个Class我也实现AdListener和NativeAdsManager.Listener方法:
@Override
public void onError(Ad ad, AdError adError) {
}
@Override
public void onAdLoaded(Ad ad) {
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public …Run Code Online (Sandbox Code Playgroud) java android facebook-audience-network recycler-adapter android-recyclerview
我正在创建聊天应用程序并使用RecyclerView.
它是从底部堆叠.
当新消息来临时.然后我们需要手动滚动到那个位置.
它不会像WhatsApp收到新邮件时那样自动改变位置.
早些时候我正在使用ListView,它正常工作.
我RecyclerView在片段底部有一个水平图像滑块.片段的顶部显示了一些细节.一旦用户点击底部的图像,想法是从图像滑块中删除该图像并在片段中显示其信息.现在信息显示但图像不会被删除RecyclerView.这是我Onclick在最外层布局中编码的内容.我已经尝试了所有可以找到的相关答案,但没有任何效果.它们都在代码中.请让我知道我做错了什么或错过了什么.
holder.itemRowRelativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFiltering) {
mItemList.clear();
mItemList.addAll(mOriginalItemList);
mItemList.remove(position);// At this point mItemList holds the correct. That is all the images but not the one that was clicked.
notifyItemRemoved(position); //solution 1
notifyItemRangeRemoved(position, getItemCount()); // solution 2
notifyItemRangeRemoved(0, getItemCount()); // solution 3
notifyDataSetChanged();//solution 4
}
}
});
Run Code Online (Sandbox Code Playgroud)
适配器的完整代码
public class ImageGallery16X9Adapter<T extends GalleryItem> extends RecyclerView.Adapter<ImageGallery16X9Adapter.GalleryItemViewHolder> {
public enum GalleryMode {
All_SAME,
FIRST_DIFFERENT
}
private Context mContext;
private BasePresenter …Run Code Online (Sandbox Code Playgroud) android android-adapter android-fragments recycler-adapter android-recyclerview
在Fragment1上,我具有onClick方法,当我单击按钮时,我得到了项目的recycleview列表。当我单击recycleview中的项目时(使用getPlaceFromItem方法),我转到Fragment2。如果设备是电话,则将Fragment2放在container1中,但是如果设备是tablet(横向),则将Fragment2放入container2中,在container1中Fragment1旁边。
现在,当设备为手机时,当我按返回按钮时,我会得到空的recycleview。
另外,我检查屏幕的方向,以及当设备为手机且我在Fragment2中(即container1中的Fragment2)时,然后在屏幕为横向时,我将放入container1 Fragment1中,并放入Fragment2中的container2中。我的问题是如何从Container1剪切Fragment2并将其放入container2。
主要活动 :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
View v = findViewById(R.id.container2);
v.setVisibility(View.GONE);
getSupportFragmentManager().beginTransaction()
.add(R.id.container1, new FragmentA())
.commit();
}
@Override
public void getPlaceFromItem(Place place) {
Bundle bundle = new Bundle();
bundle.putDouble("lat", place.getLat());
bundle.putDouble("lng", place.getLng());
Fragment2 fragment2 = new Fragment2();
fragment2.setArguments(bundle);
if(getResources().getBoolean(R.bool.isTab)) {
View v = findViewById(R.id.container2);
v.setVisibility(View.VISIBLE);
getSupportFragmentManager().beginTransaction()
.replace(R.id.container2,fragment2)
.addToBackStack(null)
.commit();
}
else {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container1, fragment2)
.addToBackStack(null)
.commit();
}
}
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) …Run Code Online (Sandbox Code Playgroud) android android-fragments recycler-adapter android-recyclerview
我正在尝试在应用程序中实现类似功能,这是回收视图中Viewholder的代码段。
回收站定制适配器
public class PostAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView title,user,description,tag,time,designation;
Long date;
ImageView imageView,bookmark,profilepic,sharebutton,like;
RelativeLayout head;
LinearLayout content;
DatabaseReference reference;
Context context;
String name;
public void setContext(Context context) {
this.context = context;
}
public PostAdapterViewHolder (final View itemView) {
super(itemView);
itemView.setOnClickListener(this);
head = (RelativeLayout) itemView.findViewById(R.id.head);
content = (LinearLayout) itemView.findViewById(R.id.content);
imageView =(ImageView)itemView.findViewById(R.id.imageview);
designation = (TextView) itemView.findViewById(R.id.designation);
like =(ImageView)itemView.findViewById(R.id.like);
profilepic = (ImageView) itemView.findViewById(R.id.imageView2);
bookmark =(ImageView)itemView.findViewById(R.id.bookmark);
title = (TextView) itemView.findViewById(R.id.title);
description = (TextView) itemView.findViewById(R.id.description);
time = (TextView) itemView.findViewById(R.id.date);
tag = (TextView) …Run Code Online (Sandbox Code Playgroud) android android-resources onclicklistener recycler-adapter android-recyclerview
我已经使用了RececlerView与ViewHolder现在一会儿模式.我正在实施一个自定义Adapter.
我不是在我的代码中搜索特定的错误帮助.
我只是想知道,如果这是正常的,该onBindViewHolder方法被多次调用(对于相同的项目),同时滚动到列表的末尾并向上滚动.在这种情况下onBindViewHolder,再次调用项目0和1(该列表总共包含7个项目)
是否有可能在不通知数据已更改的情况下将此方法调用为AGAIN?
我有点困惑.
亲切的问候,Palm
android listview android-viewholder recycler-adapter android-recyclerview
背景:我正在开发一款健身应用.到目前为止一切都很好,但是当我MediaPlayer在android中使用音频文件时出现了问题.
我检查了资源,发现ListView但在RecyclerView + MediaPlayer上找不到任何内容.
我想知道如何在使用RecyclerView + Toggle Button + String Uri(离线 - 原始文件夹)时使其工作
问题:现在它正在播放每个点击事件的第一个.mp3文件(对于Eng:R.raw.sample_one_eng正在播放,对于印地语:R.raw.sample_one_hindi正在播放).我认为它没有考虑到国际地位.
后来,我想把它放在网上(可能是谷歌云),因为音频文件(.mp3)使我的应用程序非常沉重.关于这一点的任何想法也将受到赞赏(快速缓冲等).
ListExercises.java
public class ListExercises extends AppCompatActivity {
List<ExerciseAudio> exerciseList = new ArrayList<>();
RecyclerView.LayoutManager layoutManager;
RecyclerView recyclerView;
RecyclerViewAdapterAud adapter;
PlayClickHandler clickHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_exercises);
initData();
recyclerView = (RecyclerView) findViewById(R.id.list_ex);
adapter = new RecyclerViewAdapterAud(exerciseList, getBaseContext());
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
}
private void initData() {
exerciseList.add(new ExerciseAudio(R.drawable.sample_one, "Sample Exercise One", "Sans …Run Code Online (Sandbox Code Playgroud) android android-mediaplayer recycler-adapter android-recyclerview