我有一个ListView和一个自定义适配器。问题是我看不到listview和数据,只看到一个白色页面。
在片段中我有:
private ArrayList<HashMap<String, Object>> mlist = new ArrayList<HashMap<String, Object>>();
...
for (int i = 1; i < array.length(); i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
Gson gson = new Gson();
Avv mAvv = gson.fromJson(String.valueOf(array.getJSONObject(i)), Avv.class);
map.put("id", String.valueOf(i));
map.put("Name", mAvv.getNome());
map.put("Surname", mAvv.getCognome());
map.put("Title", mAvv.getTitolo());
map.put("Info", mAvv.getTesto());
mlist.add(map);
}
...
CustomAdapter mAdapter = new CustomAdapter(getActivity(),mlist);
list.setAdapter(mAdapter);
在CustomAdapter中,我有:
public class CustomAdapter extends BaseAdapter {
private final Activity context;
private LayoutInflater mInflater;
ArrayList<HashMap<String, Object>> mlist;
public CustomAdapter(Activity context,ArrayList<HashMap<String, Object>> mlist){
this.context = context;
this.mlist=mlist;
mInflater = context.getLayoutInflater();
}
public class ViewHolder {
public ImageButton mImageButton;
public TextView mTitleView;
public TextView mNomeView;
public TextView mCognomeView;
public TextView mInfoView;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
if (mlist != null && position >= 0 && position < getCount()) {
return mlist.get(position);
}
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder viewHolder;
if (view == null) {
view = mInflater.inflate(R.layout.item_list_avvisi, null);
viewHolder = new ViewHolder();
viewHolder.mImageButton = (ImageButton) view.findViewById(R.id.imageButton);
viewHolder.mCognomeView = (TextView) view.findViewById(R.id.surname);
viewHolder.mNomeView = (TextView) view.findViewById(R.id.name);
viewHolder.mTitleView = (TextView) view.findViewById(R.id.title);
viewHolder.mInfoView = (TextView) view.findViewById(R.id.info);
view.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) view.getTag();
}
setData(viewHolder, mlist, position);
return view;
}
private void setData(ViewHolder viewHolder, ArrayList<HashMap<String, Object>> mlist,int position) {
viewHolder.mCognomeView.setText(mlist.get(position).get("Surname").toString());
viewHolder.mNomeView.setText(mlist.get(position).get("Name").toString());
viewHolder.mTitleView.setText(mlist.get(position).get("Title").toString());
viewHolder.mInfoView.setText(mlist.get(position).get("Info").toString());
}
}
我错在哪里?
更新:
谢谢,如果我想在ImageButton上设置onClickListener,我该怎么做?。。我尝试:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
viewHolder.mImageButton.setClickable(true);
viewHolder.mImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, (String) viewHolder.mNomeView.getText().toString()
);
shareIntent.setType("text/plain");
context.startActivity(shareIntent);
}
});
但问题是,当我单击例如第一个项目viewHolder时。mNomeView。getText()。toString()返回第二项的字符串。。为什么?
问题出在您的方法中
@Override
public int getCount() {
return 0;
}
将其更改为:
@Override
public int getCount() {
return mList.size();
}
更新
第二个问题:
试试这个:
viewHolder.mImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, (String) mlist.get(position).get("Name").toString()
);
shareIntent.setType("text/plain");
context.startActivity(shareIntent);
}
});
问题内容: 这是我遵循的使用自定义Listview适配器的教程。我遇到的问题是,当我尝试清除适配器时,应用程序崩溃并抛出 更新的代码: 问题答案: 环顾四周,似乎是使用数组初始化适配器。请参阅带有ArrayAdapter.remove的UnsupportedOperationException和无法在ListView中修改ArrayAdapter:UnsupportedOperationExcep
我尝试按照幻灯片youtube 6部分教程创建一个带有自定义行的列表视图。在他的教程中,他使用了1个图像和2个文本视图,我需要3个图像和3个文本视图,当我运行应用程序时,它在尝试加载列表视图时崩溃。 -------------家庭单行.xml----------------------- - Homelistview.xml - Homeactivitylistview.java 04-22 15
问题内容: 我看了以下网站: ListView示例 其中描述了如何在使用默认适配器的列表视图中实现搜索功能,并且效果很好。 如何修改它,以便可以将其用于列表视图的自定义适配器? 部分代码为: 问题答案: 您需要覆盖适配器内部的getFilter并返回您创建的新的customFilter对象。看到这个答案: 编辑:
代码如下: 这是适配器,我在这里为列表做了自己的设计(< code>R.layout.zalistu),它在仿真器中工作,但在设备上它给我一个错误(应用程序意外停止),如果我使用< code>simple_list_item_1,那么它在仿真器和我的设备上都可以正常工作。 这里是R:layout.zalistu: 日志猫: 我设备上的Android版本是2.3.7,模拟器上的版本是4.0.4(AP
我正在尝试将ListView与fragmnet中的自定义适配器(baseAdapter)一起使用。 当我直接在MainActivity中使用此代码时,一切正常,但当我在片段中使用此代码时,它没有崩溃,但它没有显示任何内容,它只是一个空白片段。另外,当我尝试使用简单的arrayAdapter在片段中绑定一个textView时,它工作得很好,所以我认为问题将出现在我的自定义适配器中。 为什么不显示Li
问题内容: 我有一个使用自定义适配器的ListView,如下所示: 布局非常简单,因此除非有人认为它们相关,否则我不会发布它们。 问题是某些CheckBoxes没有响应。似乎是第一次显示布局时可见的内容。您必须向下滚动才能正常工作的任何内容。 任何指针表示赞赏。 问题答案: 答案中的代码有效,但效率很低(实际上,您可以看到它,只需滚动并检查即可看到垃圾收集器正在工作)。下面是一种改进的回收视图的方