我有一个可扩展的列表视图。我已经放了一些数据,一切似乎都没问题,但是当我点击未显示的组textviews子视图时,我在组布局中有三个textview,当点击listview子视图成功显示的其他区域时。
我认为我在 textview焦点中遇到了问题,但我尝试从textview中删除焦点,但我失败了。
This is the screenshot. 在我的截图定义中,当我点击蓝色轮廓区域列表视图点击事件不工作但当我点击红色轮廓区域完全点击和子视图显示。 我该如何解决点击问题。
提前致谢。
这是我的代码。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/container"
android:descendantFocusability="beforeDescendants"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<ExpandableListView
android:id="@+id/lvExp"
android:layout_height="wrap_content"
android:groupIndicator="@null"
android:divider="@color/divider"
android:dividerHeight="1dp"
android:layout_width="wrap_content"/>
</RelativeLayout>
View_Group.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:focusableInTouchMode="false"
android:focusable="false"
android:descendantFocusability="blocksDescendants">
<LinearLayout
android:id="@+id/llOrderFooter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/baseWhite"
android:orientation="vertical"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="3dp"
android:paddingLeft="2dp"
android:paddingRight="2dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical"
android:layout_weight="0">
<ImageView
android:id="@+id/ivvegIndicator"
android:layout_width="6dp"
android:layout_height="6dp"
android:background="@drawable/green_circle"
/>
<ImageView
android:id="@+id/ivNonVegIndicator"
android:layout_width="6dp"
android:layout_height="6dp"
android:background="@drawable/red_circle" />
</RelativeLayout>
<com.entree.entree.views.RobottowCondenced
android:id="@+id/foodName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions|textMultiLine"
android:gravity="start|center_vertical"
android:textIsSelectable="false"
android:textSize="16sp"
android:text="FOODNAME"
android:textColor="#000"
android:singleLine="false"
android:enabled="false"
android:layout_marginLeft="5dp" />
<com.entree.entree.views.RobottowCondenced
android:id="@+id/foodPrice"
android:layout_width="wrap_content"
android:text="PRICE"
android:layout_weight="1"
android:textSize="16sp"
android:textIsSelectable="false"
android:enabled="false"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:textColor="#000" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="2dp"
android:paddingRight="2dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical"
android:visibility="invisible">
<ImageView
android:id="@+id/imageView4"
android:layout_width="6dp"
android:layout_height="6dp"
android:background="@drawable/green_circle" />
<ImageView
android:id="@+id/imageView7"
android:layout_width="6dp"
android:layout_height="6dp"
android:layout_marginTop="4dp"
android:background="@drawable/red_circle" />
</LinearLayout>
<com.entree.entree.views.RobottowCondencedLight
android:id="@+id/foodDesc"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="5dp"
android:textColor="@color/baseDark"
android:textSize="14sp"
android:enabled="false"
android:text="grtgrtgrtgrtgrtgrtgdscdscsdcdscdscsrtgrtgrtgrtg5htyjnsrtg5hqegrtertgertg"
android:textIsSelectable="false"
android:inputType="textNoSuggestions|textMultiLine"
android:lines="3"
android:layout_marginLeft="5dp"
android:layout_weight="1.06" />
<com.entree.entree.views.RobottowCondencedLight
android:id="@+id/qty"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="end|right"
android:gravity="end|right"
android:textStyle="bold"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:paddingTop="7dp"
android:paddingBottom="7dp"
android:enabled="false"
android:textIsSelectable="false"
android:textColor="@color/baseDark"
android:textSize="14sp"
android:visibility="visible"
android:layout_weight="0.17"
android:layout_marginLeft="10dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
View_Child.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/llAddFood"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/LightGreen"
android:visibility="visible"
android:weightSum="3"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/baseWhite"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="30dp"
android:orientation="horizontal">
<Button
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:text="Customize"
android:textColor="@color/baseWhite"
android:gravity="center_vertical|center_horizontal"
android:textSize="14dp"
android:textStyle="bold"
android:layout_marginTop="-2dp"
android:layout_marginBottom="2dp"/>
<View
android:layout_width="1dp"
android:layout_height="wrap_content"
android:background="@color/baseWhite"/>
<Button
android:id="@+id/btnRemoveFood"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:text="-"
android:textColor="@color/baseWhite"
android:gravity="center_vertical|center_horizontal"
android:textSize="20dp"
android:textStyle="bold" />
<View
android:layout_width="1dp"
android:layout_height="wrap_content"
android:background="@color/baseWhite"></View>
<Button
android:id="@+id/btnAddFood"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:text="+"
android:textColor="@color/baseWhite"
android:textSize="20dp"
android:gravity="center_vertical|center_horizontal"
android:textStyle="bold" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/baseWhite"/>
</LinearLayout>
</LinearLayout>
FoodListAdapter.class
public class FoodExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<String>> _listDataChild;
private Context mContext;
private ArrayList<Food> arrFood = new ArrayList<Food>();
private LayoutInflater inflater;
private FoodChangeListener fcListener;
private Restaurant resObj;
public FoodExpandableListAdapter(Context mContext, ArrayList<Food> arrFood, Restaurant resObj) {
this.mContext = mContext;
this.arrFood = arrFood;
this.resObj = resObj;
this.inflater = LayoutInflater.from(mContext);
}
public FoodExpandableListAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<String>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return 0;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) mContext
.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.viewfooter, null);
}
Button AddButton=(Button)convertView.findViewById(R.id.btnAddFood);
Button RemoveButton=(Button)convertView.findViewById(R.id.btnRemoveFood);
AddButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,groupPosition+"Add",Toast.LENGTH_LONG).show();
}
});
RemoveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,groupPosition+"Remove",Toast.LENGTH_LONG).show();
}
});
/* TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);*/
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
@Override
public Object getGroup(int groupPosition) {
return this.arrFood.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.arrFood.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
final Food food = arrFood.get(groupPosition);
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
/* LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);*/
convertView = inflater.inflate(R.layout.viewheader, null);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.foodName = (RobottowCondenced) convertView.findViewById(R.id.foodName);
holder.foodPrice = (RobottowCondenced) convertView.findViewById(R.id.foodPrice);
holder.foodDesc = (RobottowCondencedLight) convertView.findViewById(R.id.foodDesc);
holder.foodquantity = (RobottowCondencedLight) convertView.findViewById(R.id.qty);
holder.llOrderFooter = (LinearLayout) convertView.findViewById(R.id.llOrderFooter);
holder.vegOnly = (ImageView) convertView.findViewById(R.id.ivvegIndicator);
holder.VetnNonVeg = (ImageView) convertView.findViewById(R.id.ivNonVegIndicator);
holder.foodName .setFocusable(false);
holder.foodDesc .setFocusable(false);
holder.foodDesc.setFocusableInTouchMode(false);
holder.foodName.setFocusableInTouchMode(false);
holder.foodName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "Cilck", Toast.LENGTH_LONG).show();
}
});
holder.foodPrice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "Cilck", Toast.LENGTH_LONG).show();
}
});
if ((groupPosition % 2) == 0) {
holder.llOrderFooter.setBackgroundColor(Color.parseColor("#4dc4c4c4"));
} else {
holder.llOrderFooter.setBackgroundColor(Color.parseColor("#f7f7f9"));
}
if (food.getVegOnly().equalsIgnoreCase("Y")) {
holder.vegOnly.setVisibility(View.VISIBLE);
holder.VetnNonVeg.setVisibility(View.GONE);
} else {
holder.VetnNonVeg.setVisibility(View.VISIBLE);
holder.vegOnly.setVisibility(View.GONE);
}
holder.foodName.setText(food.getFoodName());
holder.foodDesc.setText(food.getFoodDesc());
holder.foodPrice.setText(mContext.getResources().getString(R.string.Rs) + " " + String.valueOf(food.getPrice()));
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public void setOnDataChangeListener(FoodChangeListener onDataChangeListener) {
fcListener = onDataChangeListener;
int price = calculateTotalCost();
if (fcListener != null)
fcListener.onDataChanged(price);
}
private int calculateTotalCost() {
int price = 0;
for (OrderItem item : EntreeApplication.arrUserOtderItems) {
price = price + item.getItemTotal();
}
return price;
}
public class ViewHolder {
RobottowCondenced foodName;
RobottowCondencedLight foodDesc;
RobottowCondenced foodPrice;
ImageView foodImage;
FrameLayout ffFoodContent;
LinearLayout llAddFood, llOrderFooter;
Button btnRemoveFood;
Button btnAddFood;
Button btnCancel;
LinearLayout llFoodFooter;
ImageView vegOnly, VetnNonVeg;
RobottowCondencedLight foodquantity;
}
}