【发布时间】:2016-07-04 08:27:20
【问题描述】:
我已经创建了自定义 Expandablelistview。该列表视图包含加号和减号图像视图以及子项中的一个文本视图。如果我单击一行中的加号意味着它将增加值增加为 1。但是如果我继续下一行值从 2 开始增加。我想为每个子项从 0 增加值。
public class ExpandListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<Group> groups;
ArrayList<Child> ch_list=new ArrayList<Child>();
private ViewHolder viewHolder; // make it global
private int count=0;
int[] myIntegerArray = new int[10100];
public class ViewHolder {
TextView tv ;
ImageView food_image;
ImageView minus,plus ;
TextView item_count;
}
public ExpandListAdapter(Context context, ArrayList<Group> groups) {
this.context = context;
this.groups = groups;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
ArrayList<Child> chList = groups.get(groupPosition).getItems();
return chList.get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final Child child = (Child) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater inflator = LayoutInflater.from(parent.getContext());
convertView = inflator.inflate(R.layout.detail_list, null);
viewHolder = new ViewHolder();
viewHolder.tv = (TextView) convertView.findViewById(R.id.type);
viewHolder.food_image = (ImageView) convertView.findViewById(R.id.food_image);
viewHolder.minus = (ImageView) convertView.findViewById(R.id.minus);
viewHolder.plus = (ImageView) convertView.findViewById(R.id.plus);
viewHolder.item_count = (TextView) convertView.findViewById(R.id.count);
convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tv.setText(child.getChildName());
viewHolder.item_count.setText(child.getCount());
viewHolder.plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Child modelChild = groups.get(groupPosition).getItems().get(childPosition);
count = count + 1;
modelChild.setCount(count);
modelChild.setChildName(modelChild.getChildName());
// set your other items if any like above
groups.get(groupPosition).getItems().set(childPosition, child);
notifyDataSetChanged();
}
});
viewHolder.minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(count!=0) {
Child modelChild = groups.get(groupPosition).getItems().get(childPosition);
count = count - 1;
modelChild.setCount(count);
modelChild.setChildName(modelChild.getChildName());
// set your other items if any like above
groups.get(groupPosition).getItems().set(childPosition, child);
notifyDataSetChanged();
}
}
});
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
ArrayList<Child> chList = groups.get(groupPosition).getItems();
return chList.size();
}
@Override
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}
@Override
public int getGroupCount() {
return groups.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Group group = (Group) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater inf = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inf.inflate(R.layout.group_item, null);
}
TextView tv = (TextView) convertView.findViewById(R.id.group_name);
tv.setText(group.getName());
ExpandableListView eLV = (ExpandableListView) parent;
int count = getGroupCount();
if(count<1){
eLV.expandGroup(groupPosition);
// eLV.setGroupIndicator(null);
}
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
儿童模型:
public class Child {
private String Name;
private int Image,count;
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public int getImage() {
return Image;
}
public void setImage(int Image) {
this.Image = Image;
}
public void setcount(int count) {
this.count = count;
}
public int getcount() {
return count;
}
}
组模型:
public class Group {
private String name;
private ArrayList<Child> Items;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<Child> getItems() {
return Items;
}
public void setItems(ArrayList<Child> Items) {
this.Items = Items;
}
}
Logcat 错误:
FATAL EXCEPTION: main
Process: abservetech.com.foodapp, PID: 14471
android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0
at android.content.res.Resources.getResourcePackageName(Resources.java:1871)
at android.content.res.SPRDResources.getThemeResources(SPRDResources.java:94)
at android.content.res.SPRDResources.getText(SPRDResources.java:155)
at android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52)
at android.widget.TextView.setText(TextView.java:3927)
at abservetech.com.foodapp.ExpandListAdapter.getChildView(ExpandListAdapter.java:83)
at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:451)
at android.widget.AbsListView.obtainView(AbsListView.java:2280)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1271)
at android.widget.ListView.onMeasure(ListView.java:1183)
at android.view.View.measure(View.java:16512)
【问题讨论】:
-
它没有正确增加的问题是什么?
-
最初所有子项的计数值为0。如果我点击第一行的加号,计数值从0增加到1。之后,我点击第二行表示计数值增加从 1 到 2。我想将计数值增加到 0 到 1,而不是 1 到第 2 行中的 2
-
您可以通过 POJO 类值而不是您现在使用的静态计数来完成
-
你能解释清楚吗
-
就像在 Group 模型类中取一个 int 变量,并为每个位置增加 1
标签: android expandablelistview expandablelistadapter