json用不同类型的项解析了listview

时间:2014-04-19 06:22:11

标签: android json listview custom-adapter

enter image description here我解析了JSON api并将其放入ListView。我有不同的类型项目,如视频,音频,图像和文本。 意味着在一行,我可以有播放按钮和其他选项的声音。 我知道我应该使用GetViewTypeCount()和getViewItemType()。

JSON就像这样

{
category: {
id: 2,
image: "/ringtone/media/cats/music.png",
title: "VARIOUS"
},
create_time: "2014-01-05T23:21:10",
file_url: "/media/sound/verysadrin_OnlRtRGn.mp3",
id: 28,
title: "Sad",
user: {
avatar: "/media/daddy_avatar/100/346186098ce0fc27be1ddbd95dcac2cf_100.jpg",
id: 12,
name: "MAY3AM"
}
},
{
category: {
id: 22,
image: "/ringtone/media/cats/video.png",
title: "VARIOUS_VIDEO"
},
create_time: "2014-02-05T23:21:10",
file_url: "/media/video/verysadrin_OnlR105n.mp4",
id: 28,
title: "Sad",
user: {
avatar: "/media/daddy_avatar/100/346186098ce0fc27be1ddbd95dcac2cf_100.jpg",
id: 12,
name: "MAY3AM"
}
},
{
category: {
id: 22,
image: "/ringtone/media/cats/video.png",
title: "NATURE"
},
create_time: "2014-03-05T23:21:10",
file_url: "/media/video/landscape.jpg",
id: 28,
title: "Landscape",
user: {
avatar: "/media/daddy_avatar/100/346186098ce0fc27be1ddbd95dcac2cf_100.jpg",
id: 12,
name: "MAY3AM"
}
},

正如你所看到的,我有一种类型(声音,视频,图像和文字)。我想通过CustomAdapter在列表视图中解析它们!我想基于json对象类型将每一行膨胀到正确的xml文件。意味着如果我的json对象是声音会将其展开到R.layout.sound.xml,如果视频膨胀为R.layout.Video.xml并且......

但我无法弄清楚这一部分,怎么能说我的CustomAdapte确定何时显示特定的视图?! 你知道吗,我在Stack中搜索了一些答案,比如你想在奇数和偶数行显示的contact list,或者像separator的列表视图那样为每个4或5行放置分隔符。 ..

但是我不想要那样的东西,因为我解析了一个json并且基于该数据应该显示正确的行类型。

我必须告诉自定义适配器这行必须膨胀到声音xml文件或Video xml文件或其他类型?!

有人可以为我解释一些代码吗?

1 个答案:

答案 0 :(得分:0)

您必须为列表视图定义自定义适配器,您可以在其中为getView()方法中的不同视图充气。

伪代码可以是:

getView() {
  if(video item) 
    inflate video item row xml layout
  else if(image item)
    inflate image item row xml layout
  else if(audio item)
    inflate audio item row xml layout
  else if(text item)
    inflate text item row xml layout
}