【发布时间】:2014-12-02 19:38:03
【问题描述】:
我想创建一个自定义列表适配器,该适配器使用 volley 由 json 数组填充,但我想在每个可点击的列表项中放置一个项目列表。下面是我想用来填充列表的示例 json
[
{
"name": "Hopewell Mutanda",
"answer": "This is my answer",
"votes": 10,
"date": 20-06-2014,
"comments": [
{
"comment": "This is a great answer",
"name": "Gloria Nyakudya",
"date": 21-10-2014,
"vote": 20,
},
]
},
]
下面是我最终的预期,但我手动进行了布局。我想用适配器来做。请注意,cmets 列表也有自己的 xml 资源和两个不同的文本视图。 cmets 应该是可点击的。
http://encodable.com/uploaddemo/files/Screenshot_2014-12-02-23-55-33.png
我的问题是如何修改我的自定义适配器以适应这些要求。我将使用与此类似的适配器,只是要进行一些名称更改。
private class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return mDataList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.feed_list_item, null);
holder = new ViewHolder();
mFeedImage = (ImageView) convertView.findViewById(R.id.feed_image);
mFeedImageAuthor = (ImageView) convertView.findViewById(R.id.feed_image_image_author);
mFeedTitle = (TextView) convertView.findViewById(R.id.feed_title);
mFeedDate = (TextView) convertView.findViewById(R.id.feed_date);
mFeedAuthor = (TextView) convertView.findViewById(R.id.feed_author);
mFeedTag = (TextView) convertView.findViewById(R.id.feed_tag);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/RobotoSlab-Light.ttf");
mFeedTitle.setTypeface(custom_font);
holder.mFeedTitle.setText(mDataList.get(position).getsFeedTitle());
holder.mFeedDate.setText(mDataList.get(position).getsFeedDate()) ;
holder.mFeedAuthor.setText(mDataList.get(position).getsFeedAuthor()) ;
holder.mFeedTag.setText(mDataList.get(position).getsFeedTag()) ;
mListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
}
});
return convertView;
}
class ViewHolder {
TextView mFeedTitle, mFeedDate, mFeedAuthor, mFeedTag;
ImageView mFeedImage, mFeedImageAuthor;
}
}
【问题讨论】:
-
but i want to put a list of items in each list item which are clickable- 你能解释一下你如何精确地可视化你的列表 -
我也很困惑。 mListView 是这个适配器为其提供视图的列表吗?或者您是否想将 ListView 放入您的列表项之一(并放入您的持有人)。列表中的列表似乎是个坏主意。你确定你需要那个吗?您能否改为计算该项目有多少个 cmets,然后在他们单击项目时有一个单独的详细信息视图?
-
大家请检查我的编辑并点击链接。我认为这可能有助于解释我想要实现的目标
标签: android json listview listadapter