我想创建一个自定义列表适配器,它使用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,
},
]
},
以下是我最终的预期,但我手动完成了布局。我想用适配器做到这一点。请注意,评论列表也有自己的xml资源,其中包含两个不同的文本视图。评论应该是可点击的。
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;
}
}
答案 0 :(得分:-1)
我认为单个列表视图项目可能有多个可点击区域。这样的列表可以与分段列表的工作方式类似。
您可以尝试this
之类的内容
更复杂的版本应该可以完成您尝试做的事情,除非我误解了您的意图,但有了这个,您应该能够定义2个或3个或更多不同的行布局和顺序但是你希望他们。