Java getChildView项onClickListener正在影响ExapndabaleListView中的所有子项
请查看此屏幕: 当我单击“接受”时,更改为另一个按钮: 如果我在可展开列表视图中单击一个Java getChildView项onClickListener正在影响ExapndabaleListView中的所有子项,java,android,Java,Android,请查看此屏幕: 当我单击“接受”时,更改为另一个按钮: 如果我在可展开列表视图中单击一个getChildView列表项,它在滚动屏幕时也会影响其他子项。在这里,当我单击getChildview项时,我更改了按钮文本 在这里,我点击一个子项的“接受”按钮,然后它应该更改为另一个按钮,但在滚动所有子项的同时,按钮也会更改 public class ExpandableListAdapter extends BaseExpandableListAdapter { private
getChildView
列表项,它在滚动屏幕时也会影响其他子项。在这里,当我单击getChildview
项时,我更改了按钮文本
在这里,我点击一个子项的“接受”按钮,然后它应该更改为另一个按钮,但在滚动所有子项的同时,按钮也会更改
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private final Context context;
private final List<String> headings;
private List<DriverOrders> order;
GroupHolder holder;
public ExpandableListAdapter(final FragmentActivity fragmentActivity,
final List<String> lidtDataHeaders, final List<DriverOrders> orders
) {
this.context = fragmentActivity;
this.headings = lidtDataHeaders;
this.order = orders;
}
@Override
public Object getChild(final int groupPosition, final int childPosition) {
return this.headings.get(childPosition);
}
@Override
public long getChildId(final int groupPosition, final int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition,
final int childPosition, final boolean isLastChild,
View convertView, final ViewGroup parent) {
final String childName = (String) getChild(groupPosition, childPosition);
// GroupHolder holder;
holder = null;
if (convertView == null) {
final LayoutInflater inflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.driver_child_layout, null);
holder = new GroupHolder();
holder.orderNumber = (TextView) convertView.findViewById(R.id.orderNumber);
holder.taskType = (TextView) convertView.findViewById(R.id.taskType);
holder.detaisl = (TextView) convertView.findViewById(R.id.detaisl);
holder.accept = (Button) convertView.findViewById(R.id.accpet);
holder.decline = (Button) convertView.findViewById(R.id.decline);
holder.started = (Button) convertView.findViewById(R.id.started);
convertView.setTag(holder);
} else {
holder = (GroupHolder) convertView.getTag();
}
/* TextView orderNumber = (TextView) convertView.findViewById(R.id.orderNumber);
TextView taskType = (TextView) convertView.findViewById(R.id.taskType);
TextView detaisl = (TextView) convertView.findViewById(R.id.detaisl);
accept = (Button) convertView.findViewById(R.id.button);
decline = (Button) convertView.findViewById(R.id.decline);
started = (Button) convertView.findViewById(R.id.started);*/
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("","inside convertview click"+parent.getChildAt(childPosition));
}
});
holder.started.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flag) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(null, CommonUtility.SERVER_URI + "person-started/" + Long.parseLong(order.get(groupPosition).getOrderId().trim()), new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
try {
if (response.getString("STATUS").equalsIgnoreCase("true")) {
mListener.onStarttrip(order.get(groupPosition).getOrderId(), order.get(groupPosition).getCustomerName(), order.get(groupPosition).getCustomerContact());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
if (statusCode == 404) {
Toast.makeText(getActivity(), "Requested resource not found", Toast.LENGTH_LONG).show();
}
// When Http response code is '500'
else if (statusCode == 500) {
Toast.makeText(getActivity(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
}
// When Http response code other than 404, 500
else {
Toast.makeText(getActivity(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
}
}
});
} else {
Toast.makeText(getActivity(), "Before started you have to accept the order", Toast.LENGTH_LONG).show();
}
}
});
holder.orderNumber.setText(order.get(groupPosition).getCustomerName());
holder.taskType.setText(order.get(groupPosition).getCustomerContact());
holder.detaisl.setText(order.get(groupPosition).getOrderId());
holder.accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("", "group positioins" + groupPosition);
String associateId = sessionManager.getUserDetails().get("associate_id");
String oredeerid = order.get(groupPosition).getOrderId();
RequestParams params = new RequestParams();
params.put("oid", oredeerid);
params.put("did", associateId);
requestForAcceptOrder(params, groupPosition);
}
});
holder.decline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.decline.setFocusable(false);
holder.decline.setEnabled(false);
holder.decline.setClickable(false);
sessionManager.setDclineId(order.get(groupPosition).getOrderId());
Toast.makeText(getActivity(), "Order is declined", Toast.LENGTH_LONG).show();
Intent myIntent = new Intent(getActivity(), DeclineReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
Long timeInMillis = new GregorianCalendar().getTimeInMillis() + 1000;
Log.d("pass", "!!!!!!!");
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, timeInMillis, 5400000, pendingIntent);
notifyDataSetChanged();
}
});
return convertView;
}
@Override
public int getChildrenCount(final int groupPosition) {
return 1;
}
@Override
public Object getGroup(final int groupPosition) {
return this.headings.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.headings.size();
}
@Override
public long getGroupId(final int groupPosition) {
return groupPosition;
}
@SuppressLint("NewApi")
@Override
public View getGroupView(final int groupPosition,
final boolean isExpanded, View convertView,
final ViewGroup parent) {
final String headerTitle = (String) this.getGroup(groupPosition);
/* final ExpandableListView mExpandableListView = (ExpandableListView) parent;
mExpandableListView.expandGroup(0);*/
// to display indicator of Expandable view from left to right
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
CabOrderFragment.this.expnListView
.setIndicatorBounds(
CabOrderFragment.this.expnListView
.getWidth() - 50,
CabOrderFragment.this.expnListView
.getWidth());
} else {
CabOrderFragment.this.expnListView
.setIndicatorBoundsRelative(
CabOrderFragment.this.expnListView
.getWidth() - 50,
CabOrderFragment.this.expnListView
.getWidth());
}
final LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(
R.layout.expandlistview_heading_group, null);
// final ImageView image = (ImageView) convertView
// .findViewById(R.id.ivHeadeImage);
final TextView lblListHeader = (TextView) convertView
.findViewById(R.id.tvListHeader);
// image.setImageResource(this.images[groupPosition]);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle.toUpperCase(Locale.getDefault()));
lblListHeader.setTextSize(10);
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(final int groupPosition,
final int childPosition) {
// TODO Auto-generated method stub
return true;
}
private void requestForAcceptOrder(RequestParams params, final int groupPosition) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(null, CommonUtility.SERVER_URI + "accept", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject obj) {
try {
if (obj.getInt("code") == 0) {
holder.accept.setVisibility(View.GONE);
holder.decline.setVisibility(View.INVISIBLE);
holder.started.setVisibility(View.VISIBLE);
Toast.makeText(getActivity(), "Oeder is Placed", Toast.LENGTH_LONG);
Intent myIntent = new Intent(getActivity(), DriverOrdersReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
Log.d("stop alarm", "!!!!!!!");
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
flag = true;
Log.e("", "object data" + obj.toString());
} else {
Toast.makeText(getActivity(), "Oeder is Not Placed", Toast.LENGTH_LONG);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
if (statusCode == 404) {
Toast.makeText(getActivity(), "Requested resource not found", Toast.LENGTH_LONG).show();
}
// When Http response code is '500'
else if (statusCode == 500) {
Toast.makeText(getActivity(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
}
// When Http response code other than 404, 500
else {
Toast.makeText(getActivity(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
}
}
});
}
/*private view holder class*/
private class GroupHolder {
TextView orderNumber;
TextView taskType;
TextView detaisl;
Button accept;
Button decline;
Button started;
}
}
公共类ExpandableListAdapter扩展了BaseExpandableListAdapter{
私人最终语境;
私人最终清单标题;
私有列表顺序;
股东;
公共可扩展列表适配器(最终碎片活动碎片活动,
最终列表lidtDataHeaders,最终列表顺序
) {
this.context=fragmentActivity;
this.headers=lidtDataHeaders;
这个订单=订单;
}
@凌驾
公共对象getChild(final int groupPosition,final int childPosition){
返回此.headers.get(childPosition);
}
@凌驾
公共长getChildId(final int groupPosition,final int childPosition){
返回子位置;
}
@凌驾
公共视图getChildView(最终整数组位置,
final int childPosition,final boolean isLastChild,
视图转换视图,最终视图组(父视图){
最后一个字符串childName=(String)getChild(groupPosition,childPosition);
//股东;
holder=null;
if(convertView==null){
最终LayoutFlater充气器=(LayoutFlater)this.context
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.driver\u child\u layout,null);
holder=新的GroupHolder();
holder.orderNumber=(TextView)convertView.findViewById(R.id.orderNumber);
holder.taskType=(TextView)convertView.findViewById(R.id.taskType);
holder.detaisl=(TextView)convertView.findViewById(R.id.detaisl);
holder.accept=(按钮)convertView.findViewById(R.id.accpet);
holder.denced=(按钮)convertView.findViewById(R.id.denced);
holder.started=(按钮)convertView.findViewById(R.id.started);
convertView.setTag(支架);
}否则{
holder=(GroupHolder)convertView.getTag();
}
/*TextView orderNumber=(TextView)convertView.findViewById(R.id.orderNumber);
TextView taskType=(TextView)convertView.findViewById(R.id.taskType);
TextView detaisl=(TextView)convertView.findViewById(R.id.detaisl);
accept=(Button)convertView.findViewById(R.id.Button);
拒绝=(按钮)convertView.findViewById(R.id.Decend);
started=(按钮)convertView.findViewById(R.id.started)*/
convertView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.e(“,”在convertview中单击“+parent.getChildAt(childPosition));
}
});
holder.started.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
国际单项体育联合会(旗){
AsyncHttpClient=新的AsyncHttpClient();
client.get(null,CommonUtility.SERVER_URI+“person start/”+Long.parseLong(order.get(groupPosition).getOrderId().trim()),新JsonHttpResponseHandler(){
@凌驾
成功时的公共void(int statusCode,Header[]headers,JSONObject响应){
super.onSuccess(状态码、头、响应);
试一试{
if(response.getString(“STATUS”).equalsIgnoreCase(“true”)){
mListener.onStarttrip(order.get(groupPosition).getOrderId(),order.get(groupPosition).getCustomerName(),order.get(groupPosition).getCustomerContact());
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
@凌驾
public void onFailure(int statusCode,Header[]headers,Throwable Throwable,JSONObject errorResponse){
super.onFailure(状态码、标题、可丢弃、错误响应);
如果(状态代码==404){
Toast.makeText(getActivity(),“未找到请求的资源”,Toast.LENGTH_LONG.show();
}
//当Http响应代码为“500”时
否则如果(状态代码==500){
Toast.makeText(getActivity(),“服务器端出了问题”,Toast.LENGTH_LONG.show();
}
//当Http响应代码不是404500时
否则{
Toast.makeText(getActivity(),“发生意外错误![最常见的错误:设备可能未连接到Internet或远程服务器未启动并运行]”,Toast.LENGTH_LONG).show();
}
}
});
}否则{
烤面包
if(yourTextMustTakeTheDefaultColor){
// set the default color in your text
} else {
// set the other color
}
GroupHolder holder;
if (convertView == null) {
final LayoutInflater inflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.driver_child_layout, null);
holder = new GroupHolder();
//the rest of code...
convertView.setTag(holder);
} else {
holder = (GroupHolder) convertView.getTag();
}
//the rest of code...
if(order.get(groupPosition).isAcceptedVisible()){
holder.accept.setVisibility(View.VISIBLE);
} else {
holder.accept.setVisibility(View.GONE);
}
private void requestForAcceptOrder(RequestParams params, final int groupPosition, final int childPosition)