2017-03-06 49 views
1

首先我對這個問題抱歉標題如果它不適合我的情況,但我會解釋我的情況,首先我創建了一個片段並在此片段中創建一個列表視圖,並創建了另一個xml文件,其中包含列表中的每個項目的視圖,爲此item.xml創建了一個setter和getter的java類,並創建了一個適配器類,其視圖如下 View在此視圖中有一個很小的相對佈局,橙色的數量和這個小橙盒右邊有一個按鈕,這個按鈕的功能應該減少列表中的項目數量。所有我需要的,如果我點擊項目在列表查看它會增加在這個小盒子的數量,例如,如果我點擊菠蘿項目,它會增加它的數量時間我點擊和替換0而不是0會是1和ID我點擊另一次在同一個項目上它將取代1而不是2,依此類推,對於小的灰色按鈕,它減少了小橙色框中的數量 這是列表視圖fragment.xml之如何在列表視圖中設置按鈕但不轉到其他活動

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="abtech.waiteriano.com.waitrer.fragments.MenuLVFragment"> 

    <ListView 
     android:id="@+id/menuLV" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

這是Fragment.Java

package abtech.waiteriano.com.waitrer.fragments; 

import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 

import abtech.waiteriano.com.waitrer.MenuActivity; 
import abtech.waiteriano.com.waitrer.R; 
import abtech.waiteriano.com.waitrer.adapters.CustomMenuListViewAdapter; 
import abtech.waiteriano.com.waitrer.connection_class.ConnectionClass; 
import abtech.waiteriano.com.waitrer.getters_and_setters.MenuListItem; 

public class MenuLVFragment extends android.app.Fragment { 

    View rootView; 
    ListView menuListView; 
    TextView TxtQty; 
    Button minusBtn; 
    static ArrayList<MenuListItem> listMenuArray = new ArrayList<MenuListItem>(); 
    CustomMenuListViewAdapter customMenuListViewAdapter; 

    public MenuLVFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     rootView = inflater.inflate(R.layout.fragment_menu_lv, container, false); 
     menuListView = (ListView) rootView.findViewById(R.id.menuLV); 
     customMenuListViewAdapter = new CustomMenuListViewAdapter(getActivity(), R.layout.menu_row_list, listMenuArray); 
     menuListView.setAdapter(customMenuListViewAdapter); 
     listMenuArray.clear(); 
     String menuListSTR = ""; 
     if (MenuActivity.Prst_ID.trim() == "-1") 
      menuListSTR = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code"; 
     else 
      menuListSTR = "select dbo.MenuItems.Item_ID, dbo.Items.Code, dbo.Items.Name, dbo.Items.Name2, dbo.Items.PrintOnChick, dbo.Items.Taxable, dbo.Items.NoServiceCharge, dbo.Items.PrintOnReport,Case { fn IFNULL ((SELECT Price_Value FROM dbo.ItemsPrices WHERE (PriceLVL_ID = 1) AND (Item_ID = dbo.Items.ID)), 0) } when 0 then dbo.Items.StaticPrice Else { fn IFNULL ((SELECT Price_Value FROM dbo.ItemsPrices WHERE (PriceLVL_ID = 1) AND (Item_ID = dbo.Items.ID)), dbo.Items.StaticPrice) } END AS Price From dbo.MenuItems LEFT OUTER JOIN dbo.Items ON dbo.MenuItems.Item_ID = dbo.Items.ID Where (dbo.MenuItems.Preset_ID = " + MenuActivity.Prst_ID + ") AND (dbo.MenuItems.Rest_ID_Active = " + ConnectionClass.Rest_ID + ") AND (dbo.MenuItems.OutLet_ID_Active = " + ConnectionClass.OutletID + ") AND (dbo.Items.Active = 1) ORDER BY dbo.MenuItems.SortNumber"; 

     ResultSet rs = ConnectionClass.Ret_RS(menuListSTR); 
     try { 
      while (rs.next()) { 
       listMenuArray.add(new MenuListItem(rs.getString("Name"))); 

      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     menuListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getActivity(),"You Clicked Here",Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return rootView; 


    } 
} 

這是item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:background="#bebdbd" 
     android:layout_height="80dp" 
     android:id="@+id/menuRL" 
     android:layout_width="fill_parent"> 


     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      app:srcCompat="@drawable/questionsign" 
      android:layout_marginStart="20dp" 
      android:id="@+id/itemImage" 
      android:layout_centerVertical="true" 
      android:layout_alignParentStart="true" /> 

     <RelativeLayout 
      android:layout_width="35dp" 
      android:layout_height="35dp" 
      android:layout_marginEnd="37dp" 
      android:id="@+id/qtyID" 
      android:background="#f9762f" 
      android:layout_centerVertical="true" 
      android:layout_alignParentEnd="true"> 

      <TextView 
       android:text="0" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/txtQTY" 
       android:layout_centerVertical="true" 
       android:layout_centerHorizontal="true" /> 
     </RelativeLayout> 

     <TextView 
      android:text="TextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="15dp" 
      android:textStyle="bold" 
      android:id="@+id/menulistTV2" 
      android:layout_alignTop="@+id/itemImage" 
      android:layout_toEndOf="@+id/itemImage" /> 

     <Button 
      android:text="-" 
      android:textSize="15dp" 
      android:layout_width="35dp" 
      android:layout_height="35dp" 
      android:id="@+id/minusBtn" 
      android:layout_alignTop="@+id/menulistTV2" 
      android:layout_alignParentEnd="true" /> 

    </RelativeLayout> 

</LinearLayout> 

,這是getter和setter類 包abtech.waiteriano.com.waitrer.getters_and_setters;

import android.graphics.Bitmap; 

/** 
* Created by dell on 3/1/2017. 
*/ 

public class MenuListItem { 
    Bitmap image; 
    String menuItemName; 
    String minusButton; 
    String plusButton; 
    String qtyView; 

    public MenuListItem(String menuItemName) { 
     super(); 
     this.image = image; 
     this.menuItemName = menuItemName; 
     this.minusButton = minusButton; 
     this.plusButton = plusButton; 
     this.qtyView = qtyView; 
    } 

    public Bitmap getImage() { 
     return image; 
    } 

    public void setImage(Bitmap image) { 
     this.image = image; 
    } 

    public String getMenuItemName() { 
     return menuItemName; 
    } 

    public void setMenuItemName(String menuItemName) { 
     this.menuItemName = menuItemName; 
    } 
    public String getMinusButton() { 
     return minusButton; 
    } 

    public void setMinusButton(String minusButton) { 
     this.minusButton = minusButton; 
    } 
    public String getPlusButton() { 
     return plusButton; 
    } 

    public void setPlusButton(String plusButton) { 
     this.plusButton = plusButton; 
    } 
    public String getQtyView() { 
     return qtyView; 
    } 

    public void setQtyView(String qtyView) { 
     this.qtyView = qtyView; 
    } 
} 

,這是我的適配器類別

package abtech.waiteriano.com.waitrer.adapters; 

import android.app.Activity; 
import android.content.Context; 
import android.support.annotation.NonNull; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import java.util.ArrayList; 

import abtech.waiteriano.com.waitrer.R; 
import abtech.waiteriano.com.waitrer.getters_and_setters.MenuListItem; 

/** 
* Created by dell on 3/1/2017. 
*/ 

public class CustomMenuListViewAdapter extends ArrayAdapter<MenuListItem> { 
    Context context; 
    int layoutResourceId; 
    ArrayList<MenuListItem> dataListMenu = new ArrayList<MenuListItem>(); 

    public CustomMenuListViewAdapter(Context context, int layoutResourceId, ArrayList<MenuListItem>dataListMenu) { 
     super(context,layoutResourceId,dataListMenu); 
     this.layoutResourceId = layoutResourceId; 
     this.context = context; 
     this.dataListMenu = dataListMenu; 


    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View listMenuRow = convertView; 
     RecordListMenuHolder recordListMenuHolder = null; 

     if(listMenuRow == null){ 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      listMenuRow = inflater.inflate(layoutResourceId, parent, false); 

      recordListMenuHolder = new RecordListMenuHolder(); 
//   recordListMenuHolder.menuItemImage = (String) listMenuRow.findViewById(R.id.itemImage); 
      recordListMenuHolder.listMenuTV = (TextView) listMenuRow.findViewById(R.id.menulistTV2); 
      recordListMenuHolder.qtyView = (RelativeLayout) listMenuRow.findViewById(R.id.qtyID); 
      recordListMenuHolder.minusBtn = (Button) listMenuRow.findViewById(R.id.minusBtn); 
      listMenuRow.setTag(recordListMenuHolder); 
     }else{ 
      recordListMenuHolder = (RecordListMenuHolder)listMenuRow.getTag(); 
     } 

     MenuListItem menuListItem = dataListMenu.get(position); 
     recordListMenuHolder.listMenuTV.setText(menuListItem.getMenuItemName()); 

     return listMenuRow; 
    } 

    static class RecordListMenuHolder { 
//  Image menuItemImage; 
     TextView listMenuTV; 
     RelativeLayout qtyView; 
     Button minusBtn; 
     Button plusBtn; 
    } 
} 

很抱歉,如果我的解釋是不理解的,如果沒有對代碼有任何疑問,請發表評論

Error with setText

+0

寫總之你想做什麼,因爲我不知道:P – Grzegorz

+0

haha​​hahahahaa obv我很快就會縮短:P @Grzegorz –

回答

2
public class CustomMenuListViewAdapter extends ArrayAdapter<MenuListItem> { 
    Context context; 
    int layoutResourceId; 
    ArrayList<MenuListItem> dataListMenu = new ArrayList<MenuListItem>(); 
     RecordListMenuHolder recordListMenuHolder; 
int qty = 0; 

    public CustomMenuListViewAdapter(Context context, int layoutResourceId, ArrayList<MenuListItem>dataListMenu) { 
     super(context,layoutResourceId,dataListMenu); 
     this.layoutResourceId = layoutResourceId; 
     this.context = context; 
     this.dataListMenu = dataListMenu; 


    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View listMenuRow = convertView; 

     if(listMenuRow == null){ 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      listMenuRow = inflater.inflate(layoutResourceId, parent, false); 

      recordListMenuHolder = new RecordListMenuHolder(); 
//   recordListMenuHolder.menuItemImage = (String) listMenuRow.findViewById(R.id.itemImage); 
      recordListMenuHolder.listMenuTV = (TextView) listMenuRow.findViewById(R.id.menulistTV2); 
      recordListMenuHolder.qtyView = (RelativeLayout) listMenuRow.findViewById(R.id.qtyID); 
      recordListMenuHolder.minusBtn = (Button) listMenuRow.findViewById(R.id.minusBtn); 
      listMenuRow.setTag(recordListMenuHolder); 
     }else{ 
      recordListMenuHolder = (RecordListMenuHolder)listMenuRow.getTag(); 
     } 

     MenuListItem menuListItem = dataListMenu.get(position); 
     recordListMenuHolder.listMenuTV.setText(menuListItem.getMenuItemName()); 
listMenuRow.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
qty++; 

recordListMenuHolder.qtyView.setText(""+qty); 
      } 
     }); 

     return listMenuRow; 
    } 

    static class RecordListMenuHolder { 
//  Image menuItemImage; 
     TextView listMenuTV; 
     RelativeLayout qtyView; 
     Button minusBtn; 
     Button plusBtn; 
    } 
} 
+0

Bro非常感謝您的幫助,但我得到了一個錯誤,您可以在我的編輯中查看我張貼了一張圖片@Frankenxtein –

+0

它在這一行中有下劃線的錯誤listMenuRow = inflater.inflate(layoutResourceId,parent,false); 並說Canot分配一個值給最終變量'listMenuRow'@Frankenxtein –

+0

我已經更新了我的答案檢查 – Frankenxtein

相關問題