【发布时间】:2015-12-05 04:41:43
【问题描述】:
我正在开发一个自定义listview,它根据HashMap 数据填充second row 中的number of row
Adapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
itemsData = hasMap.get(position);
ViewHolder viewHolder;
View view = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.listview_row_storewise_details, null, false);
viewHolder.txt_building_name = (TextView) convertView.findViewById(R.id.BUILDING);
viewHolder.txt_tower_name = (TextView) convertView.findViewById(R.id.TOWER);
viewHolder.txt_flat_number = (TextView) convertView.findViewById(R.id.FLAT_NO);
viewHolder.txt_order_id = (TextView) convertView.findViewById(R.id.ORDER_NO);
viewHolder.txt_delivery_time = (TextView) convertView.findViewById(R.id.Datetime);
viewHolder.txt_grand_total = (TextView) convertView.findViewById(R.id.txt_recurring_total_price5);
viewHolder.container = (LinearLayout) convertView.findViewById(R.id.container);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.container.removeAllViews();
for (int i=0;i<itemsData.size();i++){
StorewiseDetailsModel test = itemsData.get(i);
Log.d(TAG," test "+itemsData.get(i).getStore_name());
view = inflater.inflate(R.layout.storewise_detail_orderrow, null);
viewHolder.txt_not_vailable = (TextView) view.findViewById(R.id.txt_not_vailable);
viewHolder.txt_rupee_symbol1 = (TextView) view.findViewById(R.id.txt_recurring_price_sym_qnty);
viewHolder.txt_rupee_symbol2 = (TextView) view.findViewById(R.id.txt_recurring_price_sym1);
viewHolder.txt_item_name = (TextView) view.findViewById(R.id.txt_product_name);
viewHolder.txt_item_size = (TextView) view.findViewById(R.id.txt_product_weight);
viewHolder.txt_item_quantity = (TextView) view.findViewById(R.id.txt_recurring_total_price_qnty);
viewHolder.txt_item_total = (TextView) view.findViewById(R.id.txt_recurring_total_price);
viewHolder.divider = (TextView) view.findViewById(R.id.divider);
viewHolder.container.addView(view);
viewHolder.txt_grand_total.setText(test.getTotal());
viewHolder.txt_building_name.setText(test.getBuilding_name());
viewHolder.txt_tower_name.setText(test.getTower_name());
viewHolder.txt_flat_number.setText(test.getFlat_number());
viewHolder.txt_order_id.setText(test.getOrder_id());
viewHolder.txt_delivery_time.setText(utilClass.formatDate(test.getDelivery_time()));
if (test.getIs_available().equals("0")){
viewHolder.txt_not_vailable.setVisibility(View.VISIBLE);
viewHolder.txt_item_name.setTextColor(context.getResources().getColor(R.color.red_text));
viewHolder.txt_item_size.setTextColor(context.getResources().getColor(R.color.red_text));
viewHolder.txt_item_quantity.setTextColor(context.getResources().getColor(R.color.red_text));
viewHolder.txt_item_total.setTextColor(context.getResources().getColor(R.color.red_text));
viewHolder.txt_rupee_symbol1.setTextColor(context.getResources().getColor(R.color.red_text));
viewHolder.txt_rupee_symbol2.setTextColor(context.getResources().getColor(R.color.red_text));
viewHolder.txt_item_name.setText(test.getItem_name());
viewHolder.txt_item_size.setText(test.getItem_size());
viewHolder.txt_item_quantity.setText(test.getItem_price() + " x" + test.getItem_quantity());
viewHolder.txt_item_total.setText(test.getItem_total());
}
else if (test.getIs_available().equals("1")){
viewHolder.txt_not_vailable.setVisibility(View.GONE);
viewHolder.txt_item_name.setTextColor(context.getResources().getColor(R.color.black_text));
viewHolder.txt_item_size.setTextColor(context.getResources().getColor(R.color.black_text));
viewHolder.txt_item_quantity.setTextColor(context.getResources().getColor(R.color.black_text));
viewHolder.txt_item_total.setTextColor(context.getResources().getColor(R.color.black_text));
viewHolder.txt_rupee_symbol1.setTextColor(context.getResources().getColor(R.color.black_text));
viewHolder.txt_rupee_symbol2.setTextColor(context.getResources().getColor(R.color.black_text));
viewHolder.txt_item_name.setText(test.getItem_name());
viewHolder.txt_item_size.setText(test.getItem_size());
viewHolder.txt_item_quantity.setText(test.getItem_price() + " x" + test.getItem_quantity());
viewHolder.txt_item_total.setText(test.getItem_total());
}
}
return convertView;
}
class ViewHolder {
TextView txt_building_name;
TextView txt_tower_name;
TextView txt_flat_number;
TextView txt_order_id;
TextView txt_delivery_time;
TextView txt_grand_total;
TextView txt_item_name;
TextView txt_item_size;
TextView txt_item_quantity;
TextView txt_item_total;
LinearLayout container;
TextView divider;
TextView txt_not_vailable;
TextView txt_rupee_symbol1,txt_rupee_symbol2;
}
listview_row_storewise_details.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eeeeee"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="10dp"
>
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true">
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_not_vailable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1dp"
android:text="not available"
android:visibility="gone"
android:textColor="#b8b8b8"
android:drawableLeft="@drawable/ic_not_available"
android:drawablePadding="5dp"
android:textSize="@dimen/textsize_large" />
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_product_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1dp"
android:layout_below="@+id/txt_not_vailable"
android:textSize="@dimen/textsize_large"
android:textColor="#000000" />
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_product_weight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_product_name"
android:padding="0dp"
android:textSize="@dimen/textsize_large"
android:textColor="#000000"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/relative_order_confirm_price"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignBottom="@+id/relativeLayout"
android:paddingLeft="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
>
<RelativeLayout
android:id="@+id/layoutVoice1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:layout_gravity="bottom"
>
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_recurring_total_price_qnty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/txt_recurring_price_sym_qnty"
android:padding="2dp"
android:layout_centerVertical="true"
android:textSize="@dimen/textsize_large"
android:textColor="@color/black_text" />
<com.techmorphosis.Utils.TextViewCustomFontBold
android:id="@+id/txt_recurring_price_sym_qnty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="0dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="@string/rupees_sym"
android:textSize="@dimen/textsize_large"
android:textColor="@color/black_text"/>
</RelativeLayout>
<View
android:id="@+id/view1"
android:background="@color/uiv3_divider_color"
android:layout_width="1.0dip"
android:layout_height="fill_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
/>
<RelativeLayout
android:gravity="left"
android:id="@+id/layoutScanner1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:paddingLeft="10dp"
>
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_recurring_total_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:padding="2dp"
android:layout_centerVertical="true"
android:textSize="@dimen/textsize_large"
android:textColor="@color/black_text" />
<com.techmorphosis.Utils.TextViewCustomFontBold
android:id="@+id/txt_recurring_price_sym1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/txt_recurring_total_price"
android:padding="2dp"
android:layout_centerVertical="true"
android:text="@string/rupees_sym"
android:textSize="@dimen/textsize_large"
android:textColor="@color/black_text"/>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.8dp"
android:background="#bebebe" />
</LinearLayout>
storewise_detail_orderrow.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:orientation="vertical">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#eeeeee"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
>
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/BUILDING"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textColor="#5330A8"
android:textSize="@dimen/textsize_large"
/>
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/TOWER"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/BUILDING"
android:textColor="#5330A8"
android:textSize="@dimen/textsize_large" />
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/dash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/BUILDING"
android:layout_toRightOf="@+id/TOWER"
android:text="-"
android:textColor="#5330A8"
android:textSize="@dimen/textsize_large" />
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/FLAT_NO"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/BUILDING"
android:layout_toRightOf="@+id/dash"
android:textColor="#5330A8"
android:textSize="@dimen/textsize_large" />
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/ORDER_NO"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="right"
android:textColor="#5330A8"
android:textSize="@dimen/textsize_large"
/>
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/Datetime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/ORDER_NO"
android:textColor="#5330A8"
android:textSize="@dimen/textsize_large" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.8dp"
android:background="#bebebe" />
<LinearLayout
android:id="@+id/container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:id="@+id/myrow4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eeeeee"
android:orientation="horizontal"
android:paddingBottom="15dp"
android:paddingTop="15dp"
android:weightSum="1"
>
<com.techmorphosis.Utils.TextViewCustomFont
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_weight="0.50"
android:gravity="center"
android:textColor="#000000"
android:textSize="20sp"
/>
<RelativeLayout
android:id="@+id/relative_order_confirm_price4"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_weight="0.50"
android:paddingLeft="10dp"
android:paddingRight="17dp">
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_recurring_total_price5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:padding="2dp"
android:text="0"
android:textColor="@color/black_text"
android:textSize="20sp"
/>
<com.techmorphosis.Utils.TextViewCustomFontBold
android:id="@+id/txt_recurring_price_sym5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/txt_recurring_total_price5"
android:padding="0dp"
android:text="@string/rupees_sym"
android:textColor="@color/black_text"
android:textSize="@dimen/textsize_large" />
<com.techmorphosis.Utils.TextViewCustomFont
android:id="@+id/txt_recurring_total_price_qnty5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="35dp"
android:padding="2dp"
android:text="TOTAL"
android:textColor="@color/black_text"
android:textSize="20sp" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
<View android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="15dp"
android:background="@color/white_background"
/>
</LinearLayout>
【问题讨论】:
-
使用不同的 XML 来扩充行视图,利用列表视图的属性,根据位置具有多个不同的行。目前你正在做的是膨胀所有视图然后设置可见性,这就是你可以看到滚动问题的原因。
-
对不起。你能更详细一点吗