Android列表适配器,每个列表项中都有一个数组列表

时间:2014-12-02 19:38:04

标签: android json listview listadapter

我想创建一个自定义列表适配器,它使用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;

   }    

}

1 个答案:

答案 0 :(得分:-1)

我认为单个列表视图项目可能有多个可点击区域。这样的列表可以与分段列表的工作方式类似。

您可以尝试this

之类的内容

enter image description here

更复杂的版本应该可以完成您尝试做的事情,除非我误解了您的意图,但有了这个,您应该能够定义2个或3个或更多不同的行布局和顺序但是你希望他们。