为什么我的自定义simpleadapter填充listview只显示第一行呢

NowIWanaBe 2015-05-22 05:05:39
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mLnLay = (LinearLayout) findViewById(R.id.LinearLayout1);
mListView = (ListView) findViewById(R.id.listView1);

inflater = getLayoutInflater();

for (int i = 0; i < img.length; i++) {
Map<String, String> map = new HashMap<String, String>();
map.put("img", img[i] + "");
map.put("txt", pic[i]);
data.add(map);
}
mLnLay.removeAllViews();
mLnLay.addView(getlist());
System.out.println("添加了视图");
}

public ListView getlist() {
// list = (ListView) inflater.inflate(R.layout.item, null);
String[] from = { "img", "txt" };
int[] to = { R.id.item_img, R.id.item_txt_title };
// SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
// from, to);
myAdapter adapter = new myAdapter(this, data, R.layout.item, from, to);
mListView.setAdapter(adapter);
return mListView;
}

private class myAdapter extends SimpleAdapter {
private LayoutInflater inflater;
private List<Map<String, String>> lm = new ArrayList<Map<String, String>>();

@SuppressWarnings("unchecked")
public myAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.inflater = LayoutInflater.from(context);
lm = (List<Map<String, String>>) data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;
// Log.d("qqqq", "position:"+position);
Toast.makeText(MainActivity.this, "position:" + position, 0).show();
if (convertView == null) {
holder = new ViewHolder();

convertView = inflater.inflate(R.layout.item, null);
// holder.img = (ImageView) convertView
// .findViewById(R.id.item_img);
// holder.tx = (TextView) convertView
// .findViewById(R.id.item_txt_title);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.img.setImageResource(Integer.parseInt(lm.get(position)
.get("img")));
holder.tx.setText(lm.get(position).get("txt"));
}

return convertView;
}

}
public static class ViewHolder {
private ImageView img;
private TextView tx;

}


...全文
277 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowIWanaBe 2015-05-26
  • 打赏
  • 举报
回复
引用 4 楼 hlong97 的回复:
holder.img.setImageResource(Integer.parseInt(lm.get(position) .get("img"))); holder.tx.setText(lm.get(position).get("txt")); 把这段代码放到else外面即: else { holder = (ViewHolder) convertView.getTag(); } holder.img.setImageResource(Integer.parseInt(lm.get(position) .get("img"))); holder.tx.setText(lm.get(position).get("txt"));
嗯嗯,解决了,非常感谢
come_on_Angelababy 2015-05-26
  • 打赏
  • 举报
回复
是不是因为你的listview布局告诉设置自适应,显示一条,其他的的向上滑动
hlong97 2015-05-26
  • 打赏
  • 举报
回复
holder.img.setImageResource(Integer.parseInt(lm.get(position) .get("img"))); holder.tx.setText(lm.get(position).get("txt")); 把这段代码放到else外面即: else { holder = (ViewHolder) convertView.getTag(); } holder.img.setImageResource(Integer.parseInt(lm.get(position) .get("img"))); holder.tx.setText(lm.get(position).get("txt"));
NowIWanaBe 2015-05-25
  • 打赏
  • 举报
回复
引用 2 楼 u010668114 的回复:
话说自定义adapter的时候会重写getcount这个方法?我咋没看见你这里有呢,一般数据项数是通过这个方法来返回。
确实没加,但是后来修改,加上了getcount方法,返回了list<map(String,String)>的size,还是没解决问题,还是只显示第一张
只为搞笑 2015-05-23
  • 打赏
  • 举报
回复
话说自定义adapter的时候会重写getcount这个方法?我咋没看见你这里有呢,一般数据项数是通过这个方法来返回。
NowIWanaBe 2015-05-22
  • 打赏
  • 举报
回复
就是如果用系统的simpleadapter,可以正常显示所有图片。换成自定义simpleadapter就不行了,只显示第一张。求大神告知问题在哪儿

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧