所以,在最新的更新之前,我使用onListItemClick监听器,它工作正常,但现在我尝试使用RecyclerView,我不知道如何为每个项目实现onClick,这将打开一个新的活动..
这就是我以前的样子
public class SermonsFragment extends Fragment {
@Override
public void onListItemClick(ListView list, View v, int position, long id) {
Intent mediaStreamIntent = new Intent(getActivity(), MediaStreamPlayer.class);
mediaStreamIntent.putExtra("sermon_details", (android.os.Parcelable) list.getItemAtPosition(position));
startActivity(mediaStreamIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
但现在,我没有使用listview而是创建了一个布道适配器,它看起来像这样
public class SermonListAdapter extends RecyclerView.Adapter<SermonListAdapter.ViewHolder>{
private ArrayList<Sermon> mDataset;
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view …Run Code Online (Sandbox Code Playgroud) android android-intent android-cardview recycler-adapter android-recyclerview
我已经使用网格布局管理器实现了一个回收站视图来创建一个类别列表.现在基本上我已经尝试在OnCreateViewholder方法中的持有者中实现setOnClick Listener.在运行代码时,我收到此错误
android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志.这真的是你想要的吗?
这是我的适配器代码
package com.paaltao.Adapters;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.paaltao.R;
import com.paaltao.activity.ProductDetailsActivity;
import com.paaltao.classes.Category;
import java.util.Collections;
import java.util.List;
/**
* Created by Arindam on 02-Feb-15.
*/
public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.CategoryHolder> {
private Context context;
private LayoutInflater inflater;
private View view;
List<Category> data = Collections.emptyList();
public CategoryAdapter(Context context ,List<Category> data){
this.data = data;
this.context= context;
}
@Override
public CategoryHolder onCreateViewHolder(ViewGroup parent, int viewType) {
inflater = …Run Code Online (Sandbox Code Playgroud) 我面临以下错误:
Error:(89, 39) error: incomparable types: CAP#1 and int
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Error:Execution failed for task ':app:compileDebugJava'.
Run Code Online (Sandbox Code Playgroud)
编译失败; 请参阅编译器错误输出以获取详细信
我的Gradle文件如下所示:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0 rc3"
repositories {
maven { url "https://jitpack.io" }
mavenCentral()
jcenter()
}
defaultConfig {
applicationId "wishlist.oj.app"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release …Run Code Online (Sandbox Code Playgroud) android build.gradle android-gradle-plugin recycler-adapter android-recyclerview
我需要一个设计来实现像View上的Top图像,底部有GridView两个coloumns.所以我打算用它来实现它RecyclerView.顶部我需要使用它LinearLayoutManager和它的底部GridLayoutManager.那么如何使用这两个值创建Recycler Adapter.
我需要在向上滚动RecyclerView时实现分页.我正面临一些问题,因为在向第0个位置添加内容并通知适配器时,recyclerview会自动滚动到顶部.有没有办法禁用这种行为?
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
setFields(viewHolder, data);
if (position == 0 && getParentFragment().hasPrevious()) {
getParentFragment().callPreviousPage();
}
}
Run Code Online (Sandbox Code Playgroud)
where setFields(viewHolder, data);方法将值设置为不同的字段.
if (position == 0 && getParentFragment().hasPrevious()) {
getParentFragment().callPreviousPage();
}
Run Code Online (Sandbox Code Playgroud)
以上代码用于在回收站视图的位置达到0(分页)时调用Web服务.
public synchronized void setList(final List<TournamentsData> list) {
this.list.addAll(0, list);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
以上是将从Web服务获取的数据加载到适配器的方法.
非常感谢你提前.
下面是我的代码。
holder.followDiseaseCheckBox.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View view) {
if (holder.followDiseaseCheckBox.isChecked()) {
holder.followDiseaseCheckBox.setChecked(true);
checkBoxClicked++;
holder.followDiseaseCheckBox.setChecked(true);
// for Follow.
if (isFollowOrUnFollow.equals("FOLLOW")) {
((FollowActivity) context).diseaseListFromAdapter.add(String.valueOf(diseaseMap.get("id")));
((FollowActivity) context).setFollowButton(true);
}
// for Unfollow.
else if (isFollowOrUnFollow.equals("UN_FOLLOW")) {
((FollowTwoActivity) context).unFollowedDiseaseListFromAdapter.add(String.valueOf(diseaseMap.get("id")));
((FollowTwoActivity) context).setUnFollowDiseaseButton(true);
}
} else {
holder.followDiseaseCheckBox.setChecked(false);
checkBoxClicked--;
holder.followDiseaseCheckBox.setChecked(false);
// for Follow.
if (isFollowOrUnFollow.equals("FOLLOW")) {
((FollowActivity) context).diseaseListFromAdapter.remove(String.valueOf(diseaseMap.get("id")));
}
// for Unfollow.
else if (isFollowOrUnFollow.equals("UN_FOLLOW")) {
((FollowTwoActivity) context).unFollowedDiseaseListFromAdapter.remove(String.valueOf(diseaseMap.get("id")));
}
if (checkBoxClicked == 0) {
// for Follow.
if (isFollowOrUnFollow.equals("FOLLOW")) {
((FollowActivity) context).setFollowButton(false); …Run Code Online (Sandbox Code Playgroud) 我需要RecyclerView只加载10个项目,滚动后再加载10个项目,并像这样工作。
我使用将该项目添加到数组中Volley。
这是我的RecyclerView适配器。
class newsAdapter constructor(private val activety:MainActivity, private val ListOfCash:ArrayList<newsModling>,
val listener:BTNListener): RecyclerView.Adapter<newsAdapter.ViewHolder>(),BTNListener {
override fun getItemCount(): Int = ListOfCash.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.news_tick, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(ListOfCash[position], listener, ListOfCash)
}
inner class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) {
fun bind(Data: newsModling, listener: BTNListener, listOfnew: ArrayList<newsModling>) {
var ListOfnewsin = listOfnew[adapterPosition]
var newstitle = ListOfnewsin.title
var newsdate = ListOfnewsin.date
itemView.newsDate.text = …Run Code Online (Sandbox Code Playgroud) 好像在recylerview中的位置在滚动时会发生变化。
我想做的就是这样。
Adapter.java
@Override
public void onBindViewHolder(aViewHolder holder, int position) {
if (position == 0) {
holder.zeroIcon.setVisibility(View.VISIBLE);
} else if (position == 1) {
holder.oneIcon.setVisiblity(View.VISIBLE);
} else {
holder.otherIcon.setVisiblity(View.VISIBLE);
}
// Set text on each item
...
}
@Override
public int getItemCount() { return models.size(); }
public class aViewHolder extends RecyclerView.ViewHolder {
private ImageView zeroIcon;
private ImageView oneIcon;
private ImageView otherIcon;
public aViewHolder(View itemView) {
super(itemView);
zeroIcon = itemview.findViewById(...);
...
}
}
Run Code Online (Sandbox Code Playgroud)
我GONE在xml文件中将这些图标的可见性设置为默认值。
当我第一次看到recylerview时,图标将根据其位置显示在我期望的位置。
但是,当我向下滚动并向上滚动时,不正确的图标也会显示在不正确的位置。otherIcon …
我正在创建数据对象的循环器视图,这些对象中的每一个都会有所不同,例如.
对象1 - 字符串标题 - 字符串描述 - 图像
Obj 2 - 字符串描述
对象3 - 图像 - 字符串链接
对象4 - 字符串描述 - 视频
等等
所以我需要动态创建项目布局以适应每个数据对象.我不想创建包含所有可能的视图和组件的项目布局,并显示和隐藏,因为我认为这是不好的做法.
所以我的问题是我需要使用onBindViewHolder中的位置从列表中访问一个对象,以便在ViewHolder类中构建我的布局.
我尝试使用我在onBindViewHolder类中调用的方法并传入我在其中向数组添加自定义视图的对象,同时在内部设置内容但这不起作用.
有谁知道如何做到这一点?
问候
android android-layout recycler-adapter android-recyclerview
我有两个如下所示的布局文件。
如果列表中存在数据,则显示此布局。
当列表为空时,我将显示此布局。
现在,我想在运行时更改布局。当用户从列表中删除最后一个项目时,我想将布局更改为第二个图像中显示的“空购物车布局”。
在getItemCount()RecyclerView适配器的方法中,如果列表为空或null,则返回count,1否则返回list.size()
这是我的适配器代码。
public class CheckOutAdapter extends RecyclerView.Adapter<CheckOutAdapter.ViewHolder> {
public ArrayList<Design> designList;
private Context context;
private LayoutInflater layoutInflater;
public CheckOutAdapter(Context context, ArrayList<Design> designList) {
this.designList = designList;
this.context = context;
this.layoutInflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(designList.isEmpty() || designList == null || designList.size() == 0) {
View view = layoutInflater.inflate(R.layout.empty_cart, parent, false);
return new ViewHolder(view);
} else {
View view = layoutInflater.inflate(R.layout.checkout_single_design, parent, false);
return new …Run Code Online (Sandbox Code Playgroud) java android android-layout recycler-adapter android-recyclerview