gpt4 book ai didi

android - 在 recyclerview 中多次使用 "setAdapter()"是否有问题?

转载 作者:行者123 更新时间:2023-11-30 00:05:45 24 4
gpt4 key购买 nike

实际上我正在从服务器获取数据并在我的 recyclerview 上显示。但它什么也没显示。即使在引用了很多问题之后,我的问题仍无法解决,但后来我尝试在获取数据后使用 setAdapter() 方法,现在我的问题已解决。但我要问的是 多次使用 setAdapter 是否异常?。在我的第一次尝试中,我先设置适配器,然后在从服务器获取数据后尝试使用 adp.notifyDataSetChanged()。但现在我在获取数据后再次设置适配器。

代码:

private List<TImelineDataList> timelineDatalist;
@Override
public void onViewCreated(@NonNull View v, @Nullable Bundle savedInstanceState) {


timelineDataList= new ArrayList<>();
adapter=new CustomRecyclerViewAdapter(timelineDataList);
recyclerView.setItemViewCacheSize(30);
recyclerView.setDrawingCacheEnabled(true);
recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
recyclerView.setLayoutManager(new
LinearLayoutManager(ctx,LinearLayoutManager.HORIZONTAL,false));
recyclerView.setAdapter(adapter);

}
void addTimelineData(String email,String time,String img_link,String caption){
timelineDataList.add(new TimelineData(email,time,img_link,caption));
adapter=new CustomRecyclerViewAdapter(timelineDataList);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
}
private Emitter.Listener handlePosts = new Emitter.Listener(){

@Override
public void call(final Object... args){
try {
JSONArray jsonArray=(JSONArray)args[0];

for(int i=0;i<jsonArray.length();i++){
try {
JSONObject ob=jsonArray.getJSONObject(i);
demo_email=ob.getString("_pid");

demo_time=ob.getString("time");

demo_link=ob.getString("img_link");

demo_caption=ob.getString("caption");


addTimelineData(demo_email,demo_time,demo_link,demo_caption);

} catch (JSONException e) {
e.printStackTrace();
}
}




} catch (Exception e) {
Log.e("error",e.toString());
}
}
};

最佳答案

终于找到问题了。问题出在构造适配器两次。现在我已经删除了下一个适配器构造和 setAdapter(),并且它可以正常工作。

上一个代码:

private List<TImelineDataList> timelineDatalist;
@Override
public void onViewCreated(@NonNull View v, @Nullable Bundle savedInstanceState) {


timelineDataList= new ArrayList<>();
**adapter=new CustomRecyclerViewAdapter(timelineDataList);**//Here
recyclerView.setItemViewCacheSize(30);
recyclerView.setDrawingCacheEnabled(true);
recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
recyclerView.setLayoutManager(new
LinearLayoutManager(ctx,LinearLayoutManager.HORIZONTAL,false));
recyclerView.setAdapter(adapter);

}
void addTimelineData(String email,String time,String img_link,String caption){
timelineDataList.add(new TimelineData(email,time,img_link,caption));
**adapter=new CustomRecyclerViewAdapter(timelineDataList);**//Here
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
}
private Emitter.Listener handlePosts = new Emitter.Listener(){

@Override
public void call(final Object... args){
try {
JSONArray jsonArray=(JSONArray)args[0];

for(int i=0;i<jsonArray.length();i++){
try {
JSONObject ob=jsonArray.getJSONObject(i);
demo_email=ob.getString("_pid");

demo_time=ob.getString("time");

demo_link=ob.getString("img_link");

demo_caption=ob.getString("caption");


addTimelineData(demo_email,demo_time,demo_link,demo_caption);

} catch (JSONException e) {
e.printStackTrace();
}
}




} catch (Exception e) {
Log.e("error",e.toString());
}
}
};

新代码:

private List<TImelineDataList> timelineDatalist= new ArrayList<>();;
@Override
public void onViewCreated(@NonNull View v, @Nullable Bundle savedInstanceState) {



adapter=new CustomRecyclerViewAdapter(timelineDataList);
recyclerView.setItemViewCacheSize(30);
recyclerView.setDrawingCacheEnabled(true);
recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
recyclerView.setLayoutManager(new
LinearLayoutManager(ctx,LinearLayoutManager.HORIZONTAL,false));
recyclerView.setAdapter(adapter);

}
void addTimelineData(String email,String time,String img_link,String caption){
timelineDataList.add(new TimelineData(email,time,img_link,caption));
adapter.notifyDataSetChanged():
}
private Emitter.Listener handlePosts = new Emitter.Listener(){

@Override
public void call(final Object... args){
try {
JSONArray jsonArray=(JSONArray)args[0];

for(int i=0;i<jsonArray.length();i++){
try {
JSONObject ob=jsonArray.getJSONObject(i);
demo_email=ob.getString("_pid");

demo_time=ob.getString("time");

demo_link=ob.getString("img_link");

demo_caption=ob.getString("caption");


addTimelineData(demo_email,demo_time,demo_link,demo_caption);

} catch (JSONException e) {
e.printStackTrace();
}
}




} catch (Exception e) {
Log.e("error",e.toString());
}
}
};

关于android - 在 recyclerview 中多次使用 "setAdapter()"是否有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49050568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com