【发布时间】:2016-01-28 12:47:33
【问题描述】:
我有两个 BaseAdapter,一个用于帖子,另一个用于帖子的答案。第一个效果很好并显示了项目。当我按下查看帖子的答案时,另一个适配器会完成工作(AnswerAdapter):
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;}
我将 Adapter 设置为 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;}
我用同样的方式设置列表视图。
ReadPosts redPosts=new ReadPosts();
allTheData=redPosts.returnparam("Request all the data");
myAdapter= new MyAdapter(this,allTheData);
listView.setAdapter(myAdapter);
我的问题是这个适配器只工作了几次。当我将服务器从本地主机移动到网络主机时,问题就开始了。 此适配器不显示项目,因为它不调用 getView,因为 ArrayList 显示为大小 0。但是当我记录另一个适配器时,大小也是 0,但实际上它运行良好(后适配器)。
当我将 inflate R.layout.comment_item 更改为另一个时,它第一次起作用(但并非总是如此)。 这个问题很奇怪,我已经尝试了很多东西。非常欢迎任何帮助!
【问题讨论】:
-
你在哪里设置适配器
-
您能否描述您的问题,因为它需要更多细节才能理解。描述两个适配器以及将两个适配器设置为列表的位置。
-
对不起,我希望现在更好
标签: android baseadapter