2017-03-07 3 views
-1

Mein Problem ist, ich möchte nur einen ClickListner für List View Item erstellen, wenn ich auf ein Objekt in der Listenansicht klicke, das einen Toast auf seine Position und den Namen des ausgewählten Items zeigt, ich habe nur ein Fragment mit einem benutzerdefinierten Adapter Erstellt und ich möchte Context oder so etwas wie Kontext beziehen, aber ich fand diesen Fehler Error das ist mein Fragment KlasseInkompatible Typen Erfordert: android .content.context

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.ListView; 

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.CustomMenuLVAdapter; 
import abtech.waiteriano.com.waitrer.connection_class.ConnectionClass; 

public class LVMenuFragment extends android.app.Fragment { 
    View rootView; 
    ListView menuListView; 
    public static ArrayList<String> listMenuArray = new ArrayList<String>(); 


    public LVMenuFragment() { 
     // 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_lvmenu, container, false); 
     menuListView=(ListView) rootView.findViewById(R.id.listView); 
     menuListView.setAdapter(new CustomMenuLVAdapter(this,listMenuArray)); 
     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(rs.getString("Name")); 

      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     return rootView; 
    } 

} 

und dies ist mein Adapter Class

package abtech.waiteriano.com.waitrer.adapters; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 

import abtech.waiteriano.com.waitrer.R; 
import abtech.waiteriano.com.waitrer.fragments.LVMenuFragment; 

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

public class CustomMenuLVAdapter extends BaseAdapter { 
    ArrayList<String> resultMenuItems; 
    Context context; 
    private static LayoutInflater inflater=null; 

    public CustomMenuLVAdapter(LVMenuFragment lvMenuFragment, ArrayList<String>listMenuArray){ 
     resultMenuItems = listMenuArray; 
     context = lvMenuFragment; 
     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    public class LVItemHolder 
    { 
     TextView listMenuTV,txtQTY; 
     RelativeLayout qtyView; 
     Button minusBtn; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     LVItemHolder lvItemHolder = new LVItemHolder(); 
     View rowView; 
     rowView = inflater.inflate(R.layout.menu_list_item, null); 
     lvItemHolder.listMenuTV=(TextView)rowView.findViewById(R.id.menulistTV2); 
     lvItemHolder.txtQTY=(TextView)rowView.findViewById(R.id.txtQTY); 
     lvItemHolder.minusBtn=(Button)rowView.findViewById(R.id.minusBtn); 
     lvItemHolder.listMenuTV.setText(resultMenuItems.get(position)); 
     lvItemHolder.txtQTY.setText(resultMenuItems.get(position)); 
     rowView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(context, "You Clicked "+resultMenuItems.get(position), Toast.LENGTH_LONG).show(); 
      } 
     }); 
     return rowView; 
    } 
} 
+0

'private static LayoutInflater inflater = null;'. befreie die "statischen" hier. Es wird nicht benötigt. – petey

Antwort

1

Verwenden Sie getActivity i nstead:

context = lvMenuFragment.getActivity() 
+0

danke es funktioniert gut, aber es soll zeigen, dass die Listenansicht aber nichts angezeigt wird Ich weiß nicht, warum @petey –

+0

@ Dev.7arooney, das scheint eine andere Frage sein ;-) – petey

+0

Ich löste dies danke :) –