2016-10-30 20 views
0

私は、TableLayoutを使用して、以下のカートアクティビティ出力を生成しました。 outputListViewボタンのonClickListenerを単一のアイテムに対してアンセットする方法 - Android

リストビューには3つのリストビュー(アイテム、価格、数量)とボタン(削除用)があります 私はカートに向かっていきたいと思っていました。 (アイテム名、価格、数量、削除)

今、問題は、ユーザーが削除ボタンをクリックするたびに(丸で囲んだように)、リストビューの最初の項目を初期化しました。写真では、タイトルも削除されます。 (onClickListenerはデフォルトでアダプタクラスのすべてのボタンに適用されています)

最初のボタンでonClickListenerを削除し、残りのボタンでそのまま保持する必要がありますか?

余分:もしあなたがこのカートをフォーマットして、それほど素朴に見えないような素晴らしい方法を示せば、すばらしいことでしょう。 :)ハッピーディワリとおかげでアドバンス。 - AndroidのnewBee

cartlayout.xmlファイル

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:stretchColumns="*" 
android:background="#ffffff"> 
<TableRow> 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/cartlist_layout" 
android:orientation="horizontal"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/t1" 
    android:textStyle="normal|bold" 
    android:padding="5dip" 
    android:layout_alignParentLeft="true" 
    android:layout_toLeftOf="@+id/t2" 
    /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/t2" 
    android:padding="5dip" 
    android:textStyle="normal|bold" 
    android:layout_centerHorizontal="true" 
    /> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_toRightOf="@+id/t2" 
    android:id="@+id/t3" 
    android:textStyle="normal|bold" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:id="@+id/button6" /> 
</TableRow>> 
</TableLayout> 

Javaコード:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.fragment_mycart,container,false); 
    this.getActivity().setTitle("AADESH"); 

    cartlistview=(ListView)view.findViewById(R.id.listView1); 

    db=new DatabaseHelper(this.getContext()); 
    db.onCreate(); 
    Cursor res=db.onView(); 
    int len=res.getCount(); 

    listCartItems = new ArrayList<CartItems>(); 
    listCartItems.add(new CartItems("Item Name", "Quantity", "Price","Delete")); 

    if(len==0) 
    { 
     Toast.makeText(this.getContext(),"Cart is Empty.",Toast.LENGTH_SHORT).show(); 
     statusOfCart=false; 
    } 
    else { 
     while (res.moveToNext()) { 
      String itemname = res.getString(1).toString(); // 0 is id, 1 is name, 2 is qty, 3 price 
      String itemqty = Integer.toString(res.getInt(2)); 
      String itemprice = Integer.toString(res.getInt(3)) ; 
      Toast.makeText(this.getContext(),itemname,Toast.LENGTH_SHORT).show(); 
      listCartItems.add(new CartItems(itemname, itemqty, itemprice,"X")); 
     } 
    } 
    CartListAdapter cartListAdapter = new CartListAdapter(getContext(), R.layout.cartlist_layout, listCartItems); 
    cartlistview.setAdapter(cartListAdapter); 

    return view; 
} 

}

そしてここCartAdapter Javaコード:

public class CartListAdapter extends ArrayAdapter<CartItems> { 
Context context; 
int resLayout; 
List<CartItems> listCartItems; 
int pos; 
public CartListAdapter(Context context,int resLayout,List <CartItems> listCartItems) { 
    super(context, resLayout, listCartItems); 
    this.context=context; 
    this.resLayout=resLayout; 
    this.listCartItems=listCartItems; 
} 

@NonNull 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View v=View.inflate(context,resLayout,null); 
    pos=position; 
    TextView name=(TextView)v.findViewById(R.id.t1); 
    TextView qty=(TextView)v.findViewById(R.id.t2); 
    TextView price=(TextView)v.findViewById(R.id.t3); 
    Button delete=(Button)v.findViewById(R.id.button6); 

    CartItems cartItems=listCartItems.get(position); 
    name.setText(cartItems.getItemname()); 
    qty.setText(String.valueOf(cartItems.getQty())); 
    price.setText(String.valueOf(cartItems.getPrice())); 
    delete.setText(String.valueOf(cartItems.getDel())); 

    delete.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        listCartItems.remove(position); 
        notifyDataSetChanged(); 

       } 
      } 
    ); 

    return v; 
} 
} 

答えて

1

listCartItems.remove(位置)を実行します。位置が0より大きい場合のみ:

関連する問題