我有可过滤和可点击的RecyclerView.但是当我过滤这个适配器时,我感到很恐怖
过滤前:
过滤后:
仍然显示位置3的项目
我的适配器:
public class PasalBabAdapter extends RecyclerView.Adapter<PasalBabVH> {
private List<PasalBabModel> mPasalBabModel;
private MyItemClickListener mItemClickListener;
private MyItemLongClickListener mItemLongClickListener;
public PasalBabAdapter(List<PasalBabModel> mPasalBabModel) {
this.mPasalBabModel = mPasalBabModel;
}
@Override
public void onBindViewHolder(PasalBabVH holder, int position) {
PasalBabModel bean = mPasalBabModel.get(position);
holder.p_TextView.setText(bean.pasalbab_p);
holder.b_TextView.setText(bean.pasalbab_b);
}
public PasalBabVH onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.pasalbab_row, parent, false);
PasalBabVH vh = new PasalBabVH(itemView, mItemClickListener, mItemLongClickListener);
return vh;
}
public void setFilter(List<PasalBabModel> PasalBabModels) {
mPasalBabModel = new ArrayList<>();
mPasalBabModel.addAll(PasalBabModels);
notifyDataSetChanged();
} …Run Code Online (Sandbox Code Playgroud) android onclick android-adapter recycler-adapter android-recyclerview
我正在尝试动态更改RecycleView中的图像.它会成功更改,但是当我滚动RecycleView时,ImageView将会发生变化
这是我的适配器类代码:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {
private List<ItemObject> itemList;
private Context context;
OnGridSelected onGridObj;
public RecyclerViewAdapter(Context context, List<ItemObject> itemList,OnGridSelected onGridObj) {
this.itemList = itemList;
this.context = context;
this.onGridObj = onGridObj;
}
@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_list, null);
RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView,itemList,onGridObj);
return rcv;
}
@Override
public void onBindViewHolder(RecyclerViewHolders holder, int position) {
if(!itemList.get(position).isSelected()) {
holder.countryName.setText(itemList.get(position).getName());
holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
itemList.get(position).setIsSelected(true);
}
}
@Override
public int getItemCount() {
return this.itemList.size();
}
}
Run Code Online (Sandbox Code Playgroud)
如何防止回收视图回收?
public class VendorAdapter extends RecyclerView.Adapter<VendorAdapter.MyViewHolder> {
private List<Vendor> vendorList;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView name, rating, address;
RelativeLayout rl;
Context con;
public MyViewHolder(View view) {
super(view);
name = (TextView) view.findViewById(R.id.tv1);
address = (TextView) view.findViewById(R.id.tv2);
rating = (TextView) view.findViewById(R.id.txtstar);
rl=(RelativeLayout)view.findViewById(R.id.parentLayout);
itemView.setClickable(true);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent (v.getContext(), StartActivity.class);
con.startActivity(intent);
}
}
public VendorAdapter(List<Vendor> vendorList,Context con) {
this.vendorList = vendorList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { …Run Code Online (Sandbox Code Playgroud) 我有一个带有3个textviews的recyclerview适配器.我用模型类来设置文本.现在我想使用具有不同布局的相同适配器和不同的类,只有1个textview.当我尝试时,我得到NullPointerException(可能是因为其他2个textviews是空白的).有没有办法使用不同布局和不同类别的相同适配器?
// second class - I used 1 textview
public class Customers extends AppCompatActivity{
private CShowProgress cShowProgress;
private RecyclerView mRecyclerView;
private TimeLineAdapter mTimeLineAdapter;
private List<TimeLineModel> mDataList = new ArrayList<>();
private static final String CUSTOMERS = "http://192.168.200.3/ubooktoday/android/showspacustomerlist";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.customers);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
cShowProgress = CShowProgress.getInstance();
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
mRecyclerView.setLayoutManager(getLinearLayoutManager());
mRecyclerView.setHasFixedSize(true);
showCustomers();
}
private void showCustomers() {
if(mDataList!=null )mDataList.clear();
cShowProgress.showProgress(Customers.this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, CUSTOMERS,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
cShowProgress.hideProgress(); …Run Code Online (Sandbox Code Playgroud)
我正在研究Recyceview不同项目的通货膨胀.当我没有绑定onBindViewHolder方法上的数据RecycleView比它不崩溃..
但当我绑定数据内部onBindViewHolder比我得到的Exception,请检查我的代码,让我知道我在哪里做错了.
package com.tv.practise.adapter;
/**
Created by Ravindra Kushwaha on 10/10/16.
*/
public class RecycleDataAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private ArrayList<RecycleBen> data;
public static class SimpleText extends RecyclerView.ViewHolder {
TextView first_data_tv;
public SimpleText(View v) {
super(v);
this.first_data_tv = (TextView) v.findViewById(R.id.first_data_tv);
}
}
public class SimpleImage extends RecyclerView.ViewHolder {
ImageView second_data_iv;
public SimpleImage(View v) {
super(v);
this.second_data_iv = (ImageView) v.findViewById(R.id.second_data_iv);
}
}
public class SimpleImageWithText extends RecyclerView.ViewHolder …Run Code Online (Sandbox Code Playgroud) 我有一个带有100多件物品的recyclerView.当用户打开包含recyclerView的活动时,应该可以看到recyclerView的底部,而没有任何滚动效果.应该直接显示适配器的最后一页,就像whatsapp的聊天页面一样.
我尝试过以下方式,但是当用户打开活动时它会显示滚动效果.
recyclerView.smoothScrollToPosition(list.size());
Run Code Online (Sandbox Code Playgroud) 我从截击请求获得json值.我使用setter方法将这些值添加到列表中.当我在适配器onBindViewholder()方法中检索值并在recyclerview中显示结果时,结果未按预期显示:
下面的代码是指在MainActivity.java中从排序请求和响应中向列表添加值:
private ProductsPojo pojo;
public static ProductsAdapter productsAdapter;
private List<ProductsPojo> pojoList;
pojo = new ProductsPojo();
pojoList = new ArrayList<>();
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Log.d("Appet8","Products response:"+response.toString());
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray products = jsonObject.getJSONArray("products");
for (int i=0;i<products.length();i++) {
JSONObject product_object = products.getJSONObject(i);
String name = product_object.getString("name");
String price = product_object.getString("price");
String product_id = product_object.getString("id");
String sessionname = product_object.getString("sessionname");
String image = product_object.getString("image");
String categoryname = …Run Code Online (Sandbox Code Playgroud) java android android-adapter recycler-adapter android-recyclerview
我有recyclerview,我想在选择项目之后动态地将项目的位置更改为顶部recyclerview.
请建议实现上述问题的最佳方法?
我有一个简单的带有项目(技巧)的recyclerview,底部有一个加载微调器。
这是项目计数和项目视图类型方法的外观:
@Override
public int getItemViewType(int position) {
if (position == getItemCount() - 1) { // last position
return LOADING_FOOTER_VIEW_TYPE;
}
else {
return TIP_VIEW_TYPE;
}
}
@Override
public int getItemCount() {
return tips.size() + 1; // + 1 for the loading footer
}
Run Code Online (Sandbox Code Playgroud)
基本上,我在所有物品下都只有一个加载微调器。
我曾经这样创建适配器:
public TipsListAdapter(TipsActivity tipsActivity, ArrayList<Tip> tips) {
this.tipsActivity = tipsActivity;
this.tips = tips;
}
Run Code Online (Sandbox Code Playgroud)
然后,一旦我获取了其他项目,就可以像这样调用add:
public void addTips(List<Tip> tips) {
// hide the loading footer temporarily
isAdding = true;
notifyItemChanged(getItemCount() - 1);
// insert the …Run Code Online (Sandbox Code Playgroud) android android-support-library recycler-adapter android-recyclerview recyclerview-layout