【发布时间】:2018-04-25 21:18:09
【问题描述】:
我刚刚完成了我的自定义 ExpandableListView 适配器的实现, 现在在主要活动中,我不知道如何为我的 2 个自定义 ArrayLists 编写代码(一个用于 groupView,另一个用于 childView)。 ExpandableListView 的 GroupView 工作正常,但我不知道我应该如何编写代码并设置 childView 的数据。
让我们考虑一下 Group 和 Child 视图的所有数据与此完全相同:
X.add(new Word(R.drawable.ic_launcher_background,"A" , "#11111"));
所以在 ExpandableListView 的子视图和组视图的行中都有两个文本和一个 img。
-谢谢
MainActivity.java
public class MainActivity extends Activity {
private ExpandListAdapter ExpAdapter;
private ArrayList<Word> ExpListItems;
private ExpandableListView ExpandList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExpandList = (ExpandableListView) findViewById(R.id.lvExp);
ExpAdapter = new ExpandListAdapter(MainActivity.this, ExpListItems);
ExpListItems = new ArrayList<Word>();
ExpListItems.add(new Word(R.drawable.ic_launcher_background,"A" , "#11111"));
ExpListItems.add(new Word(R.drawable.ic_launcher_background,"B" , "#11111"));
ExpListItems.add(new Word(R.drawable.ic_launcher_background,"C" , "#11111"));
ExpListItems.add(new Word(R.drawable.ic_launcher_background,"D" , "#11111"));
ExpListItems.add(new Word(R.drawable.ic_launcher_background,"E" , "#11111"));
ExpListItems.add(new Word(R.drawable.ic_launcher_background,"F" , "#11111"));
ExpandList.setAdapter(ExpAdapter);
}
ExpandListAdapter.java(去掉不必要的代码)
public class ExpandListAdapter extends BaseExpandableListAdapter {
public Context context;
public ArrayList<Word> groups ;
public ExpandListAdapter(Context context, ArrayList<Word> groups) {
this.context = context;
this.groups = groups;
}
@Override
public int getGroupCount() {
return groups.size();
}
@Override
public int getChildrenCount(int i) {
ArrayList<Word> childList = groups.get(i).getItems();
return childList.size();
}
@Override
public Object getChild(int i, int i1) {
ArrayList<Word> childList = groups.get(i).getItems();
return childList.get(i1);
}
.
.
.
@Override
public long getChildId(int i, int i1) {
return i1;
}
.
.
.
.
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
View listItemView = view;
if(listItemView == null) {
LayoutInflater inflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
assert inflater != null;
listItemView = inflater.inflate(R.layout.child_row,null);
}
Word currentWord = groups.get(i);
TextView nameText = (TextView) listItemView.findViewById(R.id.childNameView);
nameText.setText(currentWord.getBakhsh());
TextView numberText = (TextView) listItemView.findViewById(R.id.childNumView);
numberText.setText(currentWord.getNumber());
ImageView imageIcons = (ImageView) listItemView.findViewById(R.id.childImageView);
if (currentWord.hasImage()) {
imageIcons.setImageResource(currentWord.getImage());
return listItemView;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
}
【问题讨论】:
标签: android listview expandablelistview expandablelistadapter