getGroupView设置项类似于Android项目中的Simple_Expandable_List_item

时间:2013-05-17 08:29:53

标签: java android

我正在开发Android项目。现在我必须创建自己的可扩展列表。这是我遵循的解决方案:

link to source code of expandable list that I am working on

这就是生成TextView的代码(它是列表中的元素)。我想创建一个类似于android.R.layout.simple_expandable_list_item项目的TextView。我的意思是在左边放一些图像,然后是文字。我怎么能这样做?

我尝试使用Button并在Button上设置左侧图标,但它没有帮助。按钮不会展开/折叠我的列表。

 @Override
              public View getGroupView(int groupPosition, boolean isExpanded,
                           View convertView, ViewGroup parent) {
                     TextView tv = new TextView(Vincent_ThreeelevellistActivity.this);
                     tv.setText("->FirstLevel");
                     tv.setTextColor(Color.BLACK);
                     tv.setTextSize(20);
                     tv.setBackgroundColor(Color.BLUE);
                     tv.setPadding(10, 7, 7, 7);
                     return tv;

              }

2 个答案:

答案 0 :(得分:0)

你需要像这样使用。这段代码只是一个例子。请不要更改参数并相应地实现您的代码。

@Override
       public View getGroupView(int position, View convertView, ViewGroup parent) {   

       ViewHolder holder = null;
       TextView title = null;
       TextView detail = null;
       ImageView i11=null;
       RowData rowData= getItem(position);
       if(null == convertView){
            convertView = mInflater.inflate(R.layout.list, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
 }
             holder = (ViewHolder) convertView.getTag();
             title = holder.gettitle();
             itle.setText(rowData.mTitle);
             detail = holder.getdetail();
             detail.setText(rowData.mDetail);                                                     

             i11=holder.getImage();
             i11.setImageResource(imgid[rowData.mId]);
             return convertView;
}
            private class ViewHolder {
            private View mRow;
            private TextView title = null;
            private TextView detail = null;
            private ImageView i11=null; 

            public ViewHolder(View row) {
            mRow = row;
 }
         public TextView gettitle() {
             if(null == title){
                 title = (TextView) mRow.findViewById(R.id.title);
                }
            return title;
         }     

         public TextView getdetail() {
             if(null == detail){
                  detail = (TextView) mRow.findViewById(R.id.detail);
                    }
           return detail;
         }
        public ImageView getImage() {
             if(null == i11){
                  i11 = (ImageView) mRow.findViewById(R.id.img);
                                      }
                return i11;
        }
     }

答案 1 :(得分:0)

你的问题不是那么清楚。但是根据我的理解,这是我的解决方案。

选项1:您可以在xml中创建自定义布局,然后对其进行充气并从getGroupView返回。

选项2:您可以为textview项设置compoundDrawable,以便它旁边显示一个图像。

如果要自定义向下箭头标记,可以为可扩展列表视图设置android:groupIndicator。