GridView
次の XML コードを使用して作成しました。
grid_layout.xml
<GridView
android:id="@+id/productList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="5dp"
android:layout_marginBottom="10dp"
android:drawSelectorOnTop="true"
android:fastScrollEnabled="true"
android:horizontalSpacing="10dp"
android:listSelector="@drawable/list_view_selector"
android:numColumns="3"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >
</GridView>
<!-- android:listSelector="@drawable/list_view_selector" is not affecting -->
GridView
そして、次のレイアウトでそれをバインドしました:
grid_inner_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/productChildView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/login_bg"
android:gravity="center"
android:padding="5dp" >
<ImageView
android:id="@+id/productImage"
android:layout_width="100dp"
android:layout_height="150dp"
android:layout_alignLeft="@+id/productName"
android:layout_alignRight="@+id/productName"
android:contentDescription="@string/date_desc"
android:src="@drawable/ic_date" />
<TextView
android:id="@+id/productName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/productImage"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:ellipsize="marquee"
android:gravity="center_horizontal"
android:singleLine="true"
android:text="@string/product_name"
android:textColor="@android:color/black"
android:textSize="@dimen/list_item_text_size" />
<LinearLayout
android:id="@+id/productEditTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/productName" >
<EditText
android:id="@+id/productRateValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/edit_text_holo_light"
android:gravity="right"
android:hint="@string/hint_rate"
android:inputType="number"
android:nextFocusRight="@+id/productDiscountValue"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black" >
</EditText>
<EditText
android:id="@+id/productDiscountValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/edit_text_holo_light"
android:gravity="right"
android:hint="@string/hint_disc"
android:inputType="number"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black" />
</LinearLayout>
<EditText
android:id="@+id/productQuantityValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/productEditTextView"
android:layout_marginRight="5dp"
android:background="@drawable/edit_text_holo_light"
android:gravity="right"
android:hint="@string/hint_quantity"
android:inputType="number"
android:nextFocusRight="@+id/productRateValue"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black" >
<requestFocus />
</EditText>
</RelativeLayout>
そして、私は最終的にこのビューを得ました:
私のアダプタークラスは次のようなものです:
public class MyGridViewAdapter extends SimpleCursorAdapter {
Cursor cursor;
double productRateValue;
double productDiscountValue;
ImageLoader mImageLoader = new ImageLoader(context);
public MyGridViewAdapter(Context context, int layout, Cursor c,
String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);
// TODO Auto-generated constructor stub
//get reference to the row
this.cursor = c;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if(convertView == null)
{
//get reference to the row
view = super.getView(position, convertView, parent);
holder = new ViewHolder();
productRateValue = cursor.getDouble(productCursor.getColumnIndex("rate"));
productDiscountValue = cursor.getDouble(productCursor.getColumnIndex("discount"));
//*** Image ***//
holder.prodImage = (ImageView) view.findViewById(R.id.productImage);
String path = productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_IMAGES));
mImageLoader.DisplayImage(path, holder.prodImage);
holder.prodName = (TextView) view.findViewById(R.id.productName);
holder.prodName.setText(productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_NAME)));
holder.prodQty = (EditText) view.findViewById(R.id.productQuantityValue);
holder.prodQty.setText("");
holder.prodRate = (EditText) view.findViewById(R.id.productRateValue);
holder.prodRate.setText(String.valueOf(productRateValue));
holder.prodDisc = (EditText) view.findViewById(R.id.productDiscountValue);
holder.prodDisc.setText(String.valueOf(productDiscountValue));
holder.prodRate.setFocusable(isRateEditable);
holder.prodRate.setEnabled(isRateEditable);
holder.prodDisc.setFocusable(isDiscountEditable);
holder.prodDisc.setEnabled(isDiscountEditable);
/* For set Focus on Next */
if(isRateEditable)
holder.prodQty.setNextFocusDownId(R.id.productRateValue);
else if(isDiscountEditable)
holder.prodQty.setNextFocusDownId(R.id.productDiscountValue);
if(isDiscountEditable)
holder.prodRate.setNextFocusDownId(R.id.productDiscountValue);
holder.prodDisc.setNextFocusDownId(R.id.productQuantityValue);
view.setTag(holder);
}
else
{
holder = (ViewHolder) view.getTag();
}
return view;
}
public class ViewHolder{
ImageView prodImage;
TextView prodName;
EditText prodRate;
EditText prodQty;
EditText prodDisc;
}
}
今私の質問は、ORDER
タブをクリックしたときです。「数量」が入力されたすべてのデータを保存したいのですが、オーバーライドonPause()
とonStop()
呼び出すメソッドがありますが、メソッドsaveData()
で何ができますかsaveData()
私の見解による
JSONObject
と、すべての値をJSONの配列として作成して保存したいと考えています。
助けてください...
前もって感謝します...