【问题标题】:Android list adapter with an array list in each list itemAndroid列表适配器,每个列表项中都有一个数组列表
【发布时间】: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


【解决方案1】:

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

你可以试试this

一个更复杂的版本应该可以完成你想要做的事情,除非我误解了你的意图,但是有了这个你应该能够定义 2 或 3 或更多不同的行布局并按照你的意愿对它们进行排序.

【讨论】:

  • 可能不可能有嵌套的列表视图,但可能有一个使用添加视图填充的线性布局。如果你看看 android stackachange 应用程序
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2016-09-13
  • 2021-01-10
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多