我有两个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()中的listview:
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);
我的问题是这个适配器只运行了几次。当我将服务器从localhost移动到Web主机时,问题就出现了。 此适配器不显示项目,因为它不调用getView,因为ArrayList显示为大小0.但是当我记录另一个适配器时,大小也是0但实际上它运行良好(后适配器)。
当我将R.layout.comment_item更改为另一个时,它首次运行(但并非总是如此)。 问题很奇怪,我尝试过很多东西。非常欢迎任何帮助!
答案 0 :(得分:0)
将此代码替换为您的适配器类
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;
}