[英]How to set a limit for the child in expandable listview in android
[英]how to get child value of expandable listview in android?
我想知道如何使用setonItemclick偵聽器方法獲取可擴展列表視圖的子值。 我的代碼如下所示,但是click事件無法正常工作。
mExpandableListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int groupPosition,
long id) {
// TODO Auto-generated method stub
int itemType = ExpandableListView.getPackedPositionType(groupPosition);
Log.i("item type",""+itemType);
if ( itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
childPosition = ExpandableListView.getPackedPositionChild(id);
groupPosition = ExpandableListView.getPackedPositionGroup(id);
Log.i("child",""+ childPosition);
Log.i("child Group",""+ groupPosition);
} else if(itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
groupPosition = ExpandableListView.getPackedPositionGroup(id);
Log.i("Group",""+ groupPosition);
}
}
});
無需手動獲取頭寸。 使用android定義的方法。
這是獲取子位置和父位置的方法
public class MainActivity extends Activity {
private ExpandableListView mExpandableListView;
private List<GroupEntity> mGroupCollection;
private int childPosition;
private int groupPosition;
boolean retVal;
ExpandableListAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
prepareResource();
initPage();
/*mExpandableListView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
int itemType = ExpandableListView.getPackedPositionType(id);
if ( itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
childPosition = ExpandableListView.getPackedPositionChild(id);
groupPosition = ExpandableListView.getPackedPositionGroup(id);
Log.i("child",""+ childPosition);
Log.i("child Group",""+ groupPosition);
//do your per-item callback here
return retVal; //true if we consumed the click, false if not
} else if(itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
groupPosition = ExpandableListView.getPackedPositionGroup(id);
//do your per-group callback here
Log.i("Group",""+ groupPosition);
return retVal; //true if we consumed the click, false if not
} else {
// null item; we don't consume the click
return false;
}
}
});*/
}
private void prepareResource() {
mGroupCollection = new ArrayList<GroupEntity>();
for (int i = 1; i < 7; i++) {
GroupEntity ge = new GroupEntity();
if (i == 1)
ge.Name = "Basic Info";
if (i == 2)
ge.Name = "Acadamic Background";
if (i == 3)
ge.Name = "Experience";
if (i == 4)
ge.Name = "Skill";
if (i == 5)
ge.Name = "Objective";
if (i == 6)
ge.Name = "Reference";
for (int j = 1; j < 8; j++) {
GroupItemEntity gi = ge.new GroupItemEntity();
if (i == 1 && j == 1)
gi.Name = "FirstName";
if (i == 1 && j == 2)
gi.Name = "MiddleName";
if (i == 1 && j == 3)
gi.Name = "LastName";
if (i == 1 && j == 4)
gi.Name = "Address";
if (i == 1 && j == 5)
gi.Name = "Sex";
if (i == 1 && j == 6)
gi.Name = "Merital stutas";
if (i == 1 && j == 7)
gi.Name = "Date Of Birthday";
ge.GroupItemCollection.add(gi);
}
mGroupCollection.add(ge);
}
}
private void initPage() {
mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
adapter = new ExpandableListAdapter(this,
mExpandableListView, mGroupCollection);
mExpandableListView.setAdapter(adapter);
registerForContextMenu(mExpandableListView);
}
public boolean onChildClick( ExpandableListView parent, View v, int groupPosition,int childPosition,long id) {
System.out.println("Inside onChildClick at groupPosition = " + groupPosition +" Child clicked at position " + childPosition);
return true;
}
}
要獲取可擴展listview的子元素的值,請調用此函數
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExpandList = (ExpandableListView) findViewById(R.id.exp_list);
ExpListItems = SetStandardGroups();
ExpAdapter = new ExpandListAdapter(MainActivity.this, ExpListItems);
ExpandList.setAdapter(ExpAdapter);
ExpandList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
//get the cuurrnt clicked child object
Child child = (Child) ExpAdapter.getChild(groupPosition, childPosition);
//System.err.println("child clicked");
Intent intent = new Intent(MainActivity.this, jai_ganesh.class);
intent.putExtra("message", child.getName());// get the child name and sent to next activity
startActivity(intent);
// Toast.makeText(getApplicationContext(), child.getName()+" child clicked", Toast.LENGTH_SHORT).show();
return true;
}
});
}
在上面的代碼中,您可以通過創建它的對象來獲取子值,因為它的類具有很多值。
Child child = (Child) ExpAdapter.getChild(groupPosition, childPosition);
如果你的孩子只是字符串或textview,那么你可以得到像這樣的價值
final String selected = (String) expListAdapter.getChild(
groupPosition, childPosition);
我希望這能解決問題。
嘗試這個 ...
mExpandableListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int groupPosition,
long id) {
// TODO Auto-generated method stub
// add this code
String child = (String) listAdapter.getChild(groupPosition, childPosition);
int itemType = ExpandableListView.getPackedPositionType(groupPosition);
Log.i("item type",""+itemType);
if ( itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
childPosition = ExpandableListView.getPackedPositionChild(id);
groupPosition = ExpandableListView.getPackedPositionGroup(id);
Log.i("child",""+ childPosition);
Log.i("child Group",""+ groupPosition);
// to get value of child
Log.i("child Name",+ child.toString());
} else if(itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
groupPosition = ExpandableListView.getPackedPositionGroup(id);
Log.i("Group",""+ groupPosition);
}
}
});
希望這可以幫助..!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.