gpt4 book ai didi

android - 从 ExpandableListView 检索 ChildItem?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:43 25 4
gpt4 key购买 nike

当用户单击 ExpandableListView 的子项时,我试图检索子项。为此,我的 Activity 和 ListAdapter 类如下所示。

主要 Activity :-

public class MainActivity extends Activity {

NewAdapter mNewAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ExpandableListView expandbleLis = (ExpandableListView) findViewById(R.id.expandableListView);
expandbleLis.setDividerHeight(2);
expandbleLis.setGroupIndicator(null);
expandbleLis.setClickable(true);

setGroupData();
setChildGroupData();

mNewAdapter = new NewAdapter(groupItem, childItem);
mNewAdapter
.setInflater(
(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE),
this);
expandbleLis.setAdapter(mNewAdapter);
expandbleLis.setOnGroupClickListener(new OnGroupClickListener() {

@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
Toast.makeText(MainActivity.this,
"GroupItem Clicked" + groupItem.get(groupPosition),
Toast.LENGTH_LONG).show();
return false;
}
});
expandbleLis.setOnChildClickListener(new OnChildClickListener() {

@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(MainActivity.this, "ChildItem Clicked",
Toast.LENGTH_LONG).show();

return false;
}
});

}

public void setGroupData() {
groupItem.add("TechNology");
groupItem.add("Mobile");
groupItem.add("Manufacturer");
groupItem.add("Extras");
}

ArrayList<String> groupItem = new ArrayList<String>();
ArrayList<Object> childItem = new ArrayList<Object>();

public void setChildGroupData() {
/**
* Add Data For TecthNology
*/
ArrayList<String> child = new ArrayList<String>();
child.add("Java");
child.add("Drupal");
child.add(".Net Framework");
child.add("PHP");
childItem.add(child);

/**
* Add Data For Mobile
*/
child = new ArrayList<String>();
child.add("Android");
child.add("Window Mobile");
child.add("iPHone");
child.add("Blackberry");
childItem.add(child);
/**
* Add Data For Manufacture
*/
child = new ArrayList<String>();
child.add("HTC");
child.add("Apple");
child.add("Samsung");
child.add("Nokia");
childItem.add(child);
/**
* Add Data For Extras
*/
child = new ArrayList<String>();
child.add("Contact Us");
child.add("About Us");
child.add("Location");
child.add("Root Cause");
childItem.add(child);
}

}

列表适配器:-

public class NewAdapter extends BaseExpandableListAdapter {

public ArrayList<String> groupItem, tempChild;
public ArrayList<Object> Childtem = new ArrayList<Object>();
public LayoutInflater minflater;
public Activity activity;

public NewAdapter(ArrayList<String> grList, ArrayList<Object> childItem) {
groupItem = grList;
this.Childtem = childItem;
}

public void setInflater(LayoutInflater mInflater, Activity act) {
this.minflater = mInflater;
activity = act;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
return null;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}

@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
tempChild = (ArrayList<String>) Childtem.get(groupPosition);
TextView text = null;
if (convertView == null) {
convertView = minflater.inflate(R.layout.childrow, null);
}
text = (TextView) convertView.findViewById(R.id.textView1);
text.setText(tempChild.get(childPosition));
return convertView;
}

@Override
public int getChildrenCount(int groupPosition) {
return ((ArrayList<String>) Childtem.get(groupPosition)).size();
}

@Override
public Object getGroup(int groupPosition) {
return null;
}

@Override
public int getGroupCount() {
return groupItem.size();
}

@Override
public void onGroupCollapsed(int groupPosition) {
super.onGroupCollapsed(groupPosition);
}

@Override
public void onGroupExpanded(int groupPosition) {
super.onGroupExpanded(groupPosition);
}

@Override
public long getGroupId(int groupPosition) {
return 0;
}

@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// isExpanded = false;
if (convertView == null) {
convertView = minflater.inflate(R.layout.grouprow, null);
}
((CheckedTextView) convertView).setText(groupItem.get(groupPosition));

((CheckedTextView) convertView).setChecked(isExpanded);

return convertView;
}

@Override
public boolean hasStableIds() {
return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}

}

我用 Google 搜索过 this但没有用,我没有从中获取子项目。请帮忙做这件事。

在尝试了很多可能的解决方案之后,我发布了这个,请尝试帮助我,如果您不赞成投票,请说出可能的解决方案,那么我会同意。

最佳答案

多个问题:

  • 子项需要可选择才能使点击生效。更改适配器的 isChildSelectable() 以返回 true

  • childrow.xmlLinearLayout 中删除 android:clickable="true"。 (或者,将点击处理程序添加到 LinearLayout 本身。)

  • 实现 getGroup()getChild() 以返回实际对象而不是 nullgetGroupId()getChildId() 返回本地唯一标识符。也就是说,组内的子 ID 需要是唯一的,但它们不需要跨组是唯一的。在您的情况下,返回子/组位置作为 id 即可。

关于android - 从 ExpandableListView 检索 ChildItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16055819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com