需要自己继承BaseExpandableListAdapter,重写Child与Group相关的方法.
解决方案 »
- listview中添加Button后,Button能够功能不完全相同吗?
- Android自定标题栏 动态修改标题栏中的TextView 和Button
- 真心求 IWindowManager 及相关文件
- 通过Button获取EditText中的数据并保存怎么实现
- 关闭PrintWriter,socket异常,不关闭无法发送消息,为什么?
- 请问,用代码布局时,自知addView绘制的一个圆角矩形
- 关于隐藏问题
- Android系统优化,越优越慢???
- Activity被onDestroy后,再次打开该Activity时,imageSwitcher就显示不了图片了,求解~
- 连接http问题
- java里如何获取控件句柄
- 获取权限信息失败
import java.util.HashMap;import java.util.Map;import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;import android.widget.ImageButton;
import android.widget.ImageView;import android.widget.ListView;
import android.widget.TextView;public class OrderListView extends Activity {
private ArrayList<Map<String, Object>> arrayList = new ArrayList<Map<String, Object>>();
private Map<String, Object> map;
MyAdapter adapter = null; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.order_list);
initDate();
adapter = new MyAdapter(this);
ListView list = (ListView) findViewById(R.id.order_list);
list.setAdapter(adapter); } private void initDate() {
arrayList.clear();
HashMap<String, Object> user1 = new HashMap<String, Object>();
user1.put("img", R.drawable.gohome);
user1.put("username", "家庭模式");
arrayList.add(user1);
HashMap<String, Object> user2 = new HashMap<String, Object>();
user2.put("img", R.drawable.bar);
user2.put("username", "酒吧模式");
arrayList.add(user2);
HashMap<String, Object> user3 = new HashMap<String, Object>();
user3.put("img", R.drawable.love);
user3.put("username", "梦幻模式");
arrayList.add(user3);
HashMap<String, Object> user4 = new HashMap<String, Object>();
user4.put("img", R.drawable.crazy);
user4.put("username", "疯狂模式");
arrayList.add(user4);
HashMap<String, Object> user5 = new HashMap<String, Object>();
user5.put("img", R.drawable.user_male);
user5.put("username", "自定义模式");
arrayList.add(user5);
} public Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
arrayList.remove(msg.arg1);
adapter.notifyDataSetChanged();
break;
}
super.handleMessage(msg);
}
}; public class MyAdapter extends BaseAdapter { private LayoutInflater inflater; public MyAdapter(Context c) {
this.inflater = LayoutInflater.from(c);
} @Override
public int getCount() {
return arrayList.size();
} @Override
public Object getItem(int arg0) {
return null;
} @Override
public long getItemId(int arg0) {
return 0;
} public View getView(int arg0, View arg1, ViewGroup arg2) {
View myView = inflater.inflate(R.layout.modeldelectlist, null);
TextView textView4 = (TextView) myView.findViewById(R.id.name);
ImageView img = (ImageView) myView.findViewById(R.id.img);
ImageButton button = (ImageButton) myView.findViewById(R.id.ImageButton01);
textView4.setText((String) arrayList.get(arg0).get("username"));
// img.setImageDrawable(arrayList.get(arg0).get("img"));
button.setFocusable(false);
final int arg = arg0;
// 添加事件响应
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(OrderListView.this).setTitle(
"您确定要删除吗?").setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
Message message = new Message();
message.what = 1;
message.arg1 = arg;
handler.sendMessage(message);
}
}).setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
}).show();
}
});
return myView;
}
}
}
我只是想实现两个方法,一个是addGroup(String groupName)和addChild(String groupName, String childName),前一个是根据groupName添加一个组,后者是根据groupName在对应的组中添加名为childName的子元素,不知咋整?想得自己都要崩溃,紧急求救这个是Activity类public class ActivityMain extends Activity {
public final static int MENU_ADD = Menu.FIRST;
public final static int MENU_DELETE = Menu.FIRST + 1; private ExpandableListView expandList;
private InfoDetailsAdapter adapter;
private Activity activity;
private List<String> group;
private List<List<String>> child; // 初始化group child内容
public void initialData() {
group = new ArrayList<String>();
child = new ArrayList<List<String>>();
addInfo("家人", new String[] { "老头子", "老妈", "老哥" });
}
public void addInfo(String p, String[] c) {
group.add(p);
List<String> item = new ArrayList<String>();
for (int i = 0; i < c.length; i++) {
item.add(c[i]);
}
child.add(item);
} /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
activity = this;
expandList = (ExpandableListView) findViewById(R.id.expandList);
//初始化各级元素
initialData();
//适配器内容
adapter = new InfoDetailsAdapter(this, group, child);
expandList.setAdapter(adapter);
expandList.setOnGroupClickListener(new OnGroupClickListener() {
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
Toast.makeText(activity, "[Group Click]:" + groupPosition, Toast.LENGTH_SHORT).show();
return false;
}
});
expandList.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView arg0, View arg1,
int arg2, int arg3, long arg4) {
Toast.makeText(activity, "[Child Click]:" + arg2 + ":" + arg3,
Toast.LENGTH_SHORT).show(); return false;
}
});
expandList.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
ExpandableListContextMenuInfo info=(ExpandableListContextMenuInfo)menuInfo;
String title=((TextView)info.targetView).getText().toString();
menu.setHeaderTitle(title);
menu.add(0, CONTEXTMENU_DELETED, 0, "删除联系人");
}
});
}
private static final int CONTEXTMENU_DELETED = Menu.FIRST; //删除
// 下述2个函数处理Menu按钮的事件
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, MENU_ADD, 0, " 添加 ");
menu.add(0, MENU_DELETE, 0, " 删除 ");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
boolean flag=false;
ExpandableListContextMenuInfo menuInfo=(ExpandableListContextMenuInfo)item.getMenuInfo();
String title=((TextView)menuInfo.targetView).getText().toString();
int type=ExpandableListView.getPackedPositionType(menuInfo.packedPosition);
if (type==ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
int groupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
int childPos =ExpandableListView.getPackedPositionChild(menuInfo.packedPosition);
CharSequence str="您单击了"+title;
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
flag= true;
}
else {
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
int groupPos = ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
CharSequence cs="您单击了"+title;
Toast.makeText(this, cs, Toast.LENGTH_SHORT).show();
flag= true;
}
}
return flag;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ADD:
createDialogAdd();
dialogAdd.show();
break;
case MENU_DELETE:
createDialogDelete();
dialogDelete.show();
break;
}
return super.onOptionsItemSelected(item);
}
EditText add_name, add_phone, add_sex, add_home;
EditText delete_id;
Button add_ok, add_no;
Button delete_ok, delete_no;
Dialog dialogAdd, dialogDelete;
public void createDialogAdd() {
View viewAdd = this.getLayoutInflater().inflate(R.layout.add, null);
dialogAdd = new Dialog(this);
dialogAdd.setContentView(viewAdd);
dialogAdd.setTitle("输入新成员信息");
add_name = (EditText) viewAdd.findViewById(R.id.add_name);
add_phone = (EditText) viewAdd.findViewById(R.id.add_phone);
add_sex = (EditText) viewAdd.findViewById(R.id.add_sex);
add_home = (EditText) viewAdd.findViewById(R.id.add_home);
add_ok = (Button) viewAdd.findViewById(R.id.add_ok);
add_no = (Button) viewAdd.findViewById(R.id.add_no);
add_ok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String[] data = { add_phone.getText().toString(),
add_sex.getText().toString(),
add_home.getText().toString() };
addInfo(add_name.getText().toString(), data);
dialogAdd.dismiss();
adapter.notifyDataSetChanged();
}
});
add_no.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
dialogAdd.dismiss();
}
});
}
public void createDialogDelete() {
View viewDelete = this.getLayoutInflater().inflate(R.layout.delete,
null);
dialogDelete = new Dialog(this);
dialogDelete.setContentView(viewDelete);
dialogDelete.setTitle("删除指定成员");
delete_id = (EditText) viewDelete.findViewById(R.id.delete_id);
delete_ok = (Button) viewDelete.findViewById(R.id.delete_ok);
delete_no = (Button) viewDelete.findViewById(R.id.delete_no);
delete_ok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String id = delete_id.getText().toString();
if (!id.equals("")) {
int i = Integer.parseInt(id);
group.remove(i);
child.remove(i);
dialogDelete.dismiss();
adapter.notifyDataSetChanged();
}
}
});
delete_no.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
dialogDelete.dismiss();
}
});
}
}感觉十分困苦,我只想实现上面说的两个方法,可自己忒笨,一晚上没整出来,望能帮帮忙,多谢了!