实际上,我已经实现了listview,在这里我们可以通过点击与之相关的togglebutton来选择合适的行。我正在将该行中的数据添加到arraylist。但是,我面临的问题是,当我选择行1,然后选择行2时,arraylist中的数据如下:(行1数据,行1数据,行2数据),这里行1数据是重复的。。但是,我需要这个:(第1行数据,第2行数据)。甚至我也尝试使用clear()方法。但是,当我使用它时,它会显示空白数据或上次选择的数据。。
那么,我该怎么办?
请帮帮我。
public class ExpListActivity extends ExpandableListActivity {
static String arrGroupelements[]=new String[60];
List<String> arraylistGroupelements=new ArrayList<String>();
List<String> arraylistChildren;
List<List<String>> arraylistChildelements=new ArrayList<List<String>>();
static String arrChildelements[][];
static final int arrCheckChildToggleButtons[][]=new int[60][60];
ArrayList<Integer> countChildren=new ArrayList<Integer>();
boolean allChildrenSelected=false,noChildrenSelected=false;
ExpandableListView expList;
ExpAdapter adapter;
TextView txtDetails;
ArrayList<String> details,newData;
Button btnShow;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
expList = getExpandableListView();
adapter = new ExpAdapter(this);
expList.setAdapter(adapter);
newData=new ArrayList<String>();
try {
JSONArray categories=json.getJSONArray("Category_Display");
for (int i = 0; i < categories.length(); i++) {
JSONObject c=categories.getJSONObject(i);
String strCatName=c.getString("category_name");
arraylistGroupelements.add(strCatName);
JSONArray subcategories=c.getJSONArray("subcategory");
arraylistChildren=new ArrayList<String>();
for (int j = 0; j < subcategories.length(); j++) {
JSONObject sb=subcategories.getJSONObject(j);
String strSbName=sb.getString("subcategory_name");
arraylistChildren.add(strSbName);
}
arraylistChildelements.add(arraylistChildren);
}
} catch (JSONException e) {
e.printStackTrace();
}
arrGroupelements=arraylistGroupelements.toArray(new String[arraylistGroupelements.size()]);
final int listSize=arraylistChildelements.size();
arrChildelements=new String[listSize][];
for (int i = 0; i < listSize; i++) {
List<String> sublist=arraylistChildelements.get(i);
final int sublistSize=sublist.size();
countChildren.add(new Integer(sublistSize));
arrChildelements[i]=new String[sublistSize];
for (int j = 0; j < sublistSize; j++) {
arrChildelements[i][j]=sublist.get(j);
}
}
for (int k = 0; k < adapter.getGroupCount(); k++) {
for (int m = 0; m < adapter.getChildrenCount(k);m++){
arrCheckChildToggleButtons[k][m]=0;
}
expList.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
return false;
}
});
expList.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
}
});
expList.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
}
});
expList.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
return false;
}
});
}
public class ExpAdapter extends BaseExpandableListAdapter {
private Context myContext;
public ExpAdapter(Context context) {
myContext = context;
details=new ArrayList<String>();
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return arrChildelements[groupPosition][childPosition];
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) myContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_row, null);
TextView tvPlayerName = (TextView) convertView
.findViewById(R.id.tvPlayerName);
tvPlayerName
.setText(arrChildelements[groupPosition][childPosition]);
ToggleButton btnCToggle=(ToggleButton) convertView.findViewById(R.id.btnChildToggle);
final int gP=groupPosition;
final int cP=childPosition;
btnCToggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
arrCheckChildToggleButtons[gP][cP]=1;
} else {
arrCheckChildToggleButtons[gP][cP]=0;
}
}
});
if (arrCheckChildToggleButtons[groupPosition][childPosition]==1) {
btnCToggle.setChecked(true);
details=new ArrayList<String>();
details.add((String) adapter.getChild(gP, cP));
for (int index = 0; index < details.size(); index++) {
Toast.makeText(myContext, index+" "+details.get(index), 8000).show();
}
}
else {
btnCToggle.setChecked(false);
}
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return countChildren.get(groupPosition);
}
@Override
public Object getGroup(int groupPosition) {
return arrGroupelements[groupPosition];
}
@Override
public int getGroupCount() {
return arrGroupelements.length;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) myContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.group_row, null);
final int gPos=groupPosition;
TextView tvGroupName = (TextView) convertView
.findViewById(R.id.tvGroupName);
tvGroupName.setText(arrGroupelements[gPos]);
ToggleButton btnGtoggle= (ToggleButton) convertView.findViewById(R.id.btnGroupToggle);
ImageView imgHollowCircle=(ImageView) convertView.findViewById(R.id.imgHollowCircle);
btnGtoggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
for(int i=0;i<adapter.getChildrenCount(gPos);i++){
arrCheckChildToggleButtons[gPos][i]=1;
Log.d("getgroupview_checked", "if part from getgrpview");
Log.d("getgroupview_checked", "arrCheckChildToggleButtons["+gPos+"]"+"["+i+"]="+arrCheckChildToggleButtons[gPos][i]);
}
}
else {
for (int i = 0; i < adapter.getChildrenCount(gPos); i++) {
arrCheckChildToggleButtons[gPos][i]=0;
}
}
expList.invalidateViews();
}
});
int i=0;
for (i = 0; i < adapter.getChildrenCount(gPos); i++) {
if (arrCheckChildToggleButtons[gPos][i]==0) {
allChildrenSelected=false;
break;
}
}
if (i==adapter.getChildrenCount(gPos)) {
allChildrenSelected=true;
}
imgHollowCircle.setPadding(0, 0, 8, 0);
if (allChildrenSelected) {
btnGtoggle.setChecked(true);
imgHollowCircle.setVisibility(View.VISIBLE);
imgHollowCircle.setBackgroundDrawable(getResources().getDrawable(R.drawable.green_concrete_circle));
} else {
btnGtoggle.setChecked(false);
imgHollowCircle.setBackgroundResource(R.drawable.green_hollow_circle);
imgHollowCircle.setVisibility(View.VISIBLE);
}
return convertView;
}
既然你的问题不清楚,下面是可能的解决办法
我假设,您需要删除第1行中的所有条目。
我有一个记录。 我的
问题内容: 我需要分离并计算arraylist中有多少个相同的值,并根据出现的次数进行打印。 我有一个名为digits的arraylist: 我创建了一个将每个值分开并将其保存到新数组的方法。 之后,我得到了一个名为数字的新数组。我在此数组上使用排序 和我的ArrayList看起来像这样: 它具有: 我需要根据数字的多少来打印出数字字符串,所以它看起来应该像这样:1354678290 问题答案:
问题内容: 如何从ArrayList中删除重复的元素? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加Set回中ArrayList: 当然,这会破坏中的元素顺序。
我尝试搜索列表中的某个特定名称(如果它在列表中),然后打印该对象。
我想知道如何实现以下操作:我有两个arraylists,其中的值相互关联。也就是说,同一索引上的arraylists的元素彼此相关。例如:ArrayList1(String ArrayList)=[id1,id2,id3,id2,id2,id1]。ArrayList2(整数ArrayList)=[2,3,2,5,6,3]。 我想创建2个新的arraylists与重复的值不再存在。在上面的例子中,新
我想从数组列表打印元素,但我得到错误的输出(.A@15db9742)