[英]RecyclerView with firebase remains blank sometimes, but shows items sometimes
[英]Adapter shows items sometimes
我有两个BaseAdapter,一个用于帖子,另一个用于帖子的答案。 第一个效果很好,并显示了项目。 当我按一下以查看帖子的答案时,另一个适配器会起作用(AnswerAdapater):
public AdapterAnswers(Context context, ArrayList<HashMap<String, String>> list) {
this.context=context;
searchArrayList=list;
inflater = ((Activity) context).getLayoutInflater();
}
@Override
public int getCount() {
if (searchArrayList != null)
return searchArrayList.size();
else return 5;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
dataofaRow = searchArrayList.get(position);
if (view == null) {
view = inflater.inflate(R.layout.comment_item, parent, false);
Log.d("Converview", "null" + view.getTag());
}
TextView comment= (TextView) view.findViewById(R.id.txt_comment);
comment.setText(dataofaRow.get(TAG_POSTTEXT));
return view;}
我在Answers活动的onCreate()中将适配器设置为列表视图:
Bundle extras = getIntent().getExtras();
String id=extras.getString("id");
ReadAnswers readAnswers=new ReadAnswers();
answerData=readAnswers.returnparam(id);
adapter=new AdapterAnswers(this,answerData);
listView.setAdapter(adapter);
另一个适配器(MyAdapter)基本相同:
public MyAdapter(Context context, ArrayList<HashMap<String, String>> list) {
this.context=context;
searchArrayList=list;
inflater = ((Activity) context).getLayoutInflater();
public int getCount() {
if (searchArrayList != null)
return searchArrayList.size();
else return 5;
}
@Override
public View getView(final int position, final View convertView, ViewGroup parent) {
View view = convertView;
dataofaRow = searchArrayList.get(position);
if (view == null) {
view = inflater.inflate(R.layout.comment_item, parent, false); // <-- parent as second argument
}
TextView comment= (TextView) view.findViewById(R.id.txt_comment);
seeAnswers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dataofaRow = searchArrayList.get(position);
String idOfComment=dataofaRow.get(TAG_ID);
Intent intent=new Intent(context, Answers.class);
intent.putExtra("id", idOfComment);
context.startActivity(intent);
}
});
return view;}
我以相同的方式设置listview。
ReadPosts redPosts=new ReadPosts();
allTheData=redPosts.returnparam("Request all the data");
myAdapter= new MyAdapter(this,allTheData);
listView.setAdapter(myAdapter);
我的问题是该适配器只能工作几次。 当我将服务器从本地主机移到Web主机时,问题开始了。 该适配器不显示项目,因为它没有调用getView,因为ArrayList的大小为0。但是当我登录另一个适配器时,其大小也为0,但实际上工作得很好(后适配器)。
当我将膨胀的R.layout.comment_item更改为另一个时,它是第一次工作(但并非总是如此)。 问题很奇怪,我尝试了很多事情。 任何帮助都非常欢迎!
将此代码替换为您的适配器类
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(converView == null){
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.comment_item, parent, false);
viewHolder.comment = (Textview) convertView.findViewById(R.id.txt_comment);
viewHolder.comment.setTag(position);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.comment.setText(dataofaRow.get(TAG_POSTTEXT));
return convertView();
}
private class ViewHolder{
TextView comment;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.