我正在开发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;
}
答案 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。