Android列表适配器,每个列表项中都有一个数组列表
我想创建一个自定义列表适配器,该适配器由使用volley的json数组填充,但我想在每个列表项中放置一个可单击的项目列表。下面是我想用来填充列表的json示例Android列表适配器,每个列表项中都有一个数组列表,android,json,listview,listadapter,Android,Json,Listview,Listadapter,我想创建一个自定义列表适配器,该适配器由使用volley的json数组填充,但我想在每个列表项中放置一个可单击的项目列表。下面是我想用来填充列表的json示例 [ { "name": "Hopewell Mutanda", "answer": "This is my answer", "votes": 10, "date": 20-06-2014, "comments": [ { "
[
{
"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,
},
]
},
]
下面是我最终的预期,但我是手动布局的。我想用一个适配器。请注意,注释列表也有自己的xml资源和两个不同的文本视图。评论应该是可点击的
我的问题是如何修改自定义适配器以满足这些要求。我将使用一个与此类似的适配器,只需对名称进行一些更改
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;
}
}
私有类EfficientAdapter扩展BaseAdapter{
私人停车场;
公共效率适配器(上下文){
mInflater=LayoutInflater.from(上下文);
}
public int getCount(){
返回mDataList.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
convertView=mInflater.充气(R.layout.feed\u list\u项,空);
holder=新的ViewHolder();
mFeedImage=(ImageView)convertView.findViewById(R.id.feed_image);
mFeedImageAuthor=(ImageView)convertView.findViewById(R.id.feed\u image\u image\u author);
mFeedTitle=(TextView)convertView.findViewById(R.id.feed\u title);
mFeedDate=(TextView)convertView.findViewById(R.id.feed_date);
mFeedAuthor=(TextView)convertView.findViewById(R.id.feed\u author);
mFeedTag=(TextView)convertView.findViewById(R.id.feed_标记);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
Typeface custom_font=Typeface.createFromAsset(getActivity().getAssets(),“fonts/robotosab Light.ttf”);
mFeedTitle.setTypeface(自定义字体);
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(新的android.widget.AdapterView.OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
//TODO自动生成的方法存根
}
});
返回视图;
}
类视图持有者{
TextView mFeedTitle、mFeedDate、mFeedAuthor、mFeedTag;
ImageView mFeedImage、mFeedImageAuthor;
}
}
我认为单个listview项目不可能有多个可单击区域。类似这样的列表可以类似于分段列表的工作方式
你可以试试类似的东西
一个更复杂的版本应该可以完成你想要做的,除非我误解了你的意图,但是有了这个,你应该能够定义2个或3个或更多不同的行布局,并按照你的意愿对它们进行排序。
但是我想在每个列表项中放置一个项目列表,这些项目是可点击的
-你能解释一下你是如何精确地可视化列表的吗?我也很困惑。mListView是此适配器提供视图的列表吗?或者,您是否希望将ListView放在一个列表项中(并放在支架中)。列表中的列表似乎是个坏主意。你确定你需要吗?你能计算一下这个项目有多少评论,然后在他们点击一个项目时有一个单独的详细信息视图吗?伙计们,请检查我的编辑并点击链接。我认为这可能有助于解释我想要实现的目标。可能不可能有嵌套的ListView,但可能有使用addview填充的linearlayout。如果你看看android stackachange应用程序