如何获得在扩展列表视图的parentgroup值 [英] How to get the parentgroup values in expandable listview
问题描述
在我的列表视图扩展,我parentview包含两个textvies说T1,T2和我childview包含两个按钮说B1,b2.what其实我要的是点击按钮B1每当我需要得到t1和t2.How值我能得到这个。
下面是我的列表视图扩展适配器
公共类MyFeedExpAdapter扩展BaseExpandableListAdapter {公共上下文的背景下;
INT行;
公开名单< MyTwitFeedObject> marrayOfList;
公众的ArrayList< MyTwitFeedObject> feedObject;
公众对话的对话;公共MyFeedExpAdapter(上下文的背景下,INT textViewResourceId,
清单< MyTwitFeedObject>对象){ this.context =背景;
this.row = textViewResourceId;
this.marrayOfList =物体; this.feedObject =新的ArrayList< MyTwitFeedObject>();
this.feedObject.addAll(marrayOfList);
// TODO自动生成构造函数存根
}@覆盖
公共对象getChild(INT groupPosition,诠释childPosition){
// TODO自动生成方法存根
返回null;
}@覆盖
众长getChildId(INT groupPosition,诠释childPosition){
// TODO自动生成方法存根
返回0;
}@覆盖
公共查看getChildView(INT groupPosition,诠释childPosition,
布尔isLastChild,查看convertView,父母的ViewGroup){
// TODO自动生成方法存根 我的意图= NULL; ViewHolder1 holder1 =新ViewHolder1();
如果(convertView == NULL){
LayoutInflater吹气=(LayoutInflater)上下文
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.woosuite_feedchild,NULL); holder1.b1 =(按钮)convertView.findViewById(R.id.button1);
holder1.b2 =(按钮)convertView.findViewById(R.id.button2);
holder1.b3 =(按钮)convertView.findViewById(R.id.button3);holder1.b1.setTag(groupPosition);
holder1.b2.setTag(groupPosition);
holder1.b3.setTag(groupPosition); holder1.b1.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根 }
});
holder1.b2.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
//在这里,我得到的值,并在单varaible存储,但它说无法指非final的变量groupPosition在不同的方法定义的内部类里面的INT groupPositionSelected = Integer.valueOf(v.getTag()的toString()); Singleton.screen_name = feedObject.get(groupPositionSelected).getScreen_name();
的System.out.println(Singleton.screen_name+ Singleton.screen_name);
Singleton.message = feedObject.get(groupPositionSelected).getTwit_message();
的System.out.println(Singleton.message+ Singleton.message);
意图I =新意图(背景下,Woosuite_NewTask.class);
context.startActivity(ⅰ);
}
});
// i.putExtra(名,feedObject.get(childPosition).getScreen_name());
// i.putExtra(msg中,feedObject.get(childPosition).getTwit_message());
holder1 =新ViewHolder1();
convertView.setTag(holder1);
}其他
holder1 =(ViewHolder1)convertView.getTag();
((ViewHolder1)convertView.getTag())b1.setTag(groupPosition)。
((ViewHolder1)convertView.getTag())b2.setTag(groupPosition)。
((ViewHolder1)convertView.getTag())b3.setTag(groupPosition)。 返回convertView;
}@覆盖
公众诠释getChildrenCount(INT groupPosition){
// TODO自动生成方法存根
返回1;
}@覆盖
公共对象getGroup(INT groupPosition){
// TODO自动生成方法存根
返回null;
}@覆盖
公众诠释getGroupCount(){
// TODO自动生成方法存根
返回marrayOfList.size();
}@覆盖
众长getGroupId(INT groupPosition){
// TODO自动生成方法存根
返回groupPosition;
}@覆盖
公共查看getGroupView(INT groupPosition,布尔isExpanded,
查看convertView,父母的ViewGroup){
// TODO自动生成方法存根
的System.out.println(gebug在MyTwiterFeedAdapter);
ViewHolder持有人; 如果(convertView == NULL){
LayoutInflater吹气=(LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(行,NULL);
持有人=新ViewHolder();
convertView.setTag(保持器);
}其他
支架=(ViewHolder)convertView.getTag();// feedObject = marrayOfList.get(groupPosition); holder.from_name =(TextView中)convertView.findViewById(R.id.textView5);
holder.message =(TextView中)convertView.findViewById(R.id.textView2);
holder.message_date =(TextView中)convertView.findViewById(R.id.textView3);
holder.screen_name =(TextView中)convertView.findViewById(R.id.textView1); 如果(feedObject.get(groupPosition).getTwitfrom_name()!= NULL){ holder.from_name.setText(feedObject.get(groupPosition).getTwitfrom_name());
} 如果(feedObject.get(groupPosition).getScreen_name()!= NULL){ holder.screen_name.setText(feedObject.get(groupPosition).getScreen_name());
} 如果(feedObject.get(groupPosition).getTwit_message()!= NULL){
holder.message.setText(feedObject.get(groupPosition).getTwit_message());
} }赶上(NumberFormatException的E){
// TODO自动生成catch块
e.printStackTrace();
}
} 返回convertView;
}@覆盖
公共布尔hasStableIds(){
// TODO自动生成方法存根
返回false;
}@覆盖
公共布尔isChildSelectable(INT groupPosition,诠释childPosition){
// TODO自动生成方法存根
返回true;
}公共类ViewHolder1 { 按钮B1,B2,B3;
}公共类ViewHolder {
ImageView的profile_img;
TextView的USER_NAME;
TextView的消息,FROM_NAME,MESSAGE_DATE,SCREEN_NAME;
}
}
下面是我的logcat
15 12-10:47:27.429:E / AndroidRuntime(8069):致命异常:主要
12-10 15:47:27.429:E / AndroidRuntime(8069):显示java.lang.NullPointerException
12-10 15:47:27.429:E / AndroidRuntime(8069):在com.example.woosuite.adapter.MyFeedExpAdapter.getChildView(MyFeedExpAdapter.java:171)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:456)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.AbsListView.obtainView(AbsListView.java:2465)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.ListView.onMeasure(ListView.java:1162)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.View.measure(View.java:15371)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.RelativeLayout.measureChild(RelativeLayout.java:602)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:415)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.View.measure(View.java:15371)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.View.measure(View.java:15371)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.View.measure(View.java:15371)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-10 15:47:27.429:E / AndroidRuntime(8069):在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2423)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.View.measure(View.java:15371)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2011)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1250)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1425)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1143)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4667)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:725)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.Choreographer.doCallbacks(Choreographer.java:555)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.Choreographer.doFrame(Choreographer.java:525)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:711)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.os.Handler.handleCallback(Handler.java:615)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.os.Handler.dispatchMessage(Handler.java:92)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.os.Looper.loop(Looper.java:137)
12-10 15:47:27.429:E / AndroidRuntime(8069):在android.app.ActivityThread.main(ActivityThread.java:4960)
12-10 15:47:27.429:E / AndroidRuntime(8069):在java.lang.reflect.Method.invokeNative(本机方法)
12-10 15:47:27.429:E / AndroidRuntime(8069):在java.lang.reflect.Method.invoke(Method.java:511)
12-10 15:47:27.429:E / AndroidRuntime(8069):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-10 15:47:27.429:E / AndroidRuntime(8069):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-10 15:47:27.429:E / AndroidRuntime(8069):在dalvik.system.NativeStart.main(本机方法)
像下面code设置标记:
holder1.b1.setTag(groupPosition);
holder1.b2.setTag(groupPosition);
holder1.b3.setTag(groupPosition);
和的onClick()
方法获取:
INT groupPositionSelected = Integer.valueOf(v.getTag()的toString());
//修改
编辑您的其他与此code
其他
{
((ViewHolder1)convertView.getTag())b1.setTag(groupPosition)。
((ViewHolder1)convertView.getTag())b2.setTag(groupPosition)。
((ViewHolder1)convertView.getTag())b3.setTag(groupPosition)。
支架=(ViewHolder1)v.getTag();
}
为什么你叫 holder1 =新ViewHolder1();
中的if语句设置为你的观点之前?请删除该行并只保留 convertView.setTag(holder1);
in my expandable listview, my parentview contains two textvies say t1,t2 and my childview contains two buttons say b1,b2.what actually i want is whenever clicking the button b1 i need to get the values of t1 and t2.How can i get this.
Here is my expandable listview adapter
public class MyFeedExpAdapter extends BaseExpandableListAdapter {
public Context context;
int row;
public List<MyTwitFeedObject> marrayOfList;
public ArrayList<MyTwitFeedObject> feedObject;
public Dialog dialog;
public MyFeedExpAdapter(Context context, int textViewResourceId,
List<MyTwitFeedObject> objects) {
this.context=context;
this.row=textViewResourceId;
this.marrayOfList=objects;
this.feedObject=new ArrayList<MyTwitFeedObject>();
this.feedObject.addAll(marrayOfList);
// TODO Auto-generated constructor stub
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getChildView( int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Intent i=null;
ViewHolder1 holder1 = new ViewHolder1();
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.woosuite_feedchild, null);
holder1.b1 = (Button) convertView.findViewById(R.id.button1);
holder1.b2 = (Button) convertView.findViewById(R.id.button2);
holder1.b3 = (Button) convertView.findViewById(R.id.button3);
holder1.b1.setTag(groupPosition);
holder1.b2.setTag(groupPosition);
holder1.b3.setTag(groupPosition);
holder1.b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
holder1.b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// here i getting the values and storing in singleton varaible but it saying " Cannot refer to a non-final variable groupPosition inside an inner class defined in a different method "
int groupPositionSelected = Integer.valueOf(v.getTag().toString());
Singleton.screen_name=feedObject.get(groupPositionSelected).getScreen_name();
System.out.println("Singleton.screen_name "+Singleton.screen_name);
Singleton.message=feedObject.get(groupPositionSelected).getTwit_message();
System.out.println("Singleton.message "+Singleton.message);
Intent i=new Intent(context,Woosuite_NewTask.class);
context.startActivity(i);
}
});
// i.putExtra("name", feedObject.get(childPosition).getScreen_name());
// i.putExtra("msg", feedObject.get(childPosition).getTwit_message());
holder1 = new ViewHolder1();
convertView.setTag(holder1);
} else
holder1 = (ViewHolder1) convertView.getTag();
((ViewHolder1) convertView.getTag()).b1.setTag(groupPosition);
((ViewHolder1) convertView.getTag()).b2.setTag(groupPosition);
((ViewHolder1) convertView.getTag()).b3.setTag(groupPosition);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return 1;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return marrayOfList.size();
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
System.out.println("gebug in MyTwiterFeedAdapter ");
ViewHolder holder;
if(convertView==null){
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(row, null);
holder=new ViewHolder();
convertView.setTag(holder);
}else
holder = (ViewHolder) convertView.getTag();
// feedObject=marrayOfList.get(groupPosition);
holder.from_name=(TextView) convertView.findViewById(R.id.textView5);
holder.message=(TextView) convertView.findViewById(R.id.textView2);
holder.message_date=(TextView) convertView.findViewById(R.id.textView3);
holder.screen_name=(TextView) convertView.findViewById(R.id.textView1);
if(feedObject.get(groupPosition).getTwitfrom_name()!=null){
holder.from_name.setText(feedObject.get(groupPosition).getTwitfrom_name());
}
if(feedObject.get(groupPosition).getScreen_name()!=null){
holder.screen_name.setText(feedObject.get(groupPosition).getScreen_name());
}
if(feedObject.get(groupPosition).getTwit_message()!=null){
holder.message.setText(feedObject.get(groupPosition).getTwit_message());
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
public class ViewHolder1 {
Button b1, b2, b3;
}
public class ViewHolder {
ImageView profile_img;
TextView user_name;
TextView message, from_name, message_date,screen_name;
}
}
Here is my logcat
12-10 15:47:27.429: E/AndroidRuntime(8069): FATAL EXCEPTION: main
12-10 15:47:27.429: E/AndroidRuntime(8069): java.lang.NullPointerException
12-10 15:47:27.429: E/AndroidRuntime(8069): at com.example.woosuite.adapter.MyFeedExpAdapter.getChildView(MyFeedExpAdapter.java:171)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:456)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.AbsListView.obtainView(AbsListView.java:2465)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.ListView.onMeasure(ListView.java:1162)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.View.measure(View.java:15371)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:602)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:415)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.View.measure(View.java:15371)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.View.measure(View.java:15371)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.View.measure(View.java:15371)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-10 15:47:27.429: E/AndroidRuntime(8069): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2423)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.View.measure(View.java:15371)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2011)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1250)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1425)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1143)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4667)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.Choreographer.doFrame(Choreographer.java:525)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.os.Handler.handleCallback(Handler.java:615)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.os.Handler.dispatchMessage(Handler.java:92)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.os.Looper.loop(Looper.java:137)
12-10 15:47:27.429: E/AndroidRuntime(8069): at android.app.ActivityThread.main(ActivityThread.java:4960)
12-10 15:47:27.429: E/AndroidRuntime(8069): at java.lang.reflect.Method.invokeNative(Native Method)
12-10 15:47:27.429: E/AndroidRuntime(8069): at java.lang.reflect.Method.invoke(Method.java:511)
12-10 15:47:27.429: E/AndroidRuntime(8069): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-10 15:47:27.429: E/AndroidRuntime(8069): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-10 15:47:27.429: E/AndroidRuntime(8069): at dalvik.system.NativeStart.main(Native Method)
set tag like following code:
holder1.b1.setTag(groupPosition);
holder1.b2.setTag(groupPosition);
holder1.b3.setTag(groupPosition);
and in onClick()
method get that:
int groupPositionSelected = Integer.valueOf(v.getTag().toString());
//EDIT
Edit your else with this code
else
{
((ViewHolder1) convertView.getTag()).b1.setTag(groupPosition);
((ViewHolder1) convertView.getTag()).b2.setTag(groupPosition);
((ViewHolder1) convertView.getTag()).b3.setTag(groupPosition);
holder = (ViewHolder1) v.getTag();
}
why you call holder1 = new ViewHolder1();
before setting to your view in if statement? please delete that line and just keep convertView.setTag(holder1);
这篇关于如何获得在扩展列表视图的parentgroup值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!