2017-05-17 7 views
-2

Hier ist mein Code, der nichtOnItemClickListener und OnClickListener nicht für Listview arbeitet mit BaseAdapter

Ich erhalte Daten vom Server mit `AsyncTask` und stellen Daten an die` arbeitet listview` `baseadapter` verwenden, aber mit` convertview.setonclicklistner` arbeiten in Adapterklasse und unter Code enthält in `Fragmentclass (Import android.support.v4.app.Fragment;)` so glaube ich es nicht problematisch ist

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view= inflater.inflate(R.layout.fragment_restaurants, container, false); 
    restaurant_list = (ListView)view.findViewById(R.id.restatrant_lv); 

    no_restaturants=(TextView)view.findViewById(R.id.no_restaturants); 

    // listening to single list item on click 
    restaurant_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      Log.e("temp","temppppp"); 

     } 
    }); 

    //set layout slide listener 
    rowItems = new ArrayList<>(); 

    history_list = new ArrayList<HashMap<String, String>>(); 
    list_adapter = new ViewAdapter(getActivity(),rowItems); 
    restaurant_list.setAdapter(list_adapter); 
} 

Was die Lösung dafür ist, ?

Antwort

0
android:descendantFocusability="blocksDescendants" 

Wenn eine Listview fokussierbar oder anklickbare Ansicht enthält dann OnItemClickListener nicht funktionieren. In diesem Fall müssen wir dies nutzen.


Versuchen Sie, Ihre setOnClickListener nach dem Setzen des Adapters einzustellen:

So:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view= inflater.inflate(R.layout.fragment_restaurants, container, false); 
    restaurant_list = (ListView)view.findViewById(R.id.restatrant_lv); 

    no_restaturants=(TextView)view.findViewById(R.id.no_restaturants); 


    //set layout slide listener 
    rowItems = new ArrayList<>(); 

    history_list = new ArrayList<HashMap<String, String>>(); 
    list_adapter = new ViewAdapter(getActivity(),rowItems); 
    restaurant_list.setAdapter(list_adapter); 

// listening to single list item on click 
     restaurant_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      Log.e("temp","temppppp"); 

     } 
    }); 
} 
+0

yeh habe ich versucht, dass auch, aber immer noch nicht funktioniert ... :(@Sac – alias26

+0

können Sie Ihre XML-Datei schreiben –

+0

Haben Sie ein fokussierbares Element in Ihrem XML? – Sac

0

für custom_list_item.xml ID Ihrer Eltern Layout hinzufügen

holder.parentLayout.setOnClickListener(new OnClickItem(position)); 

private class OnClickItem implements View.OnClickListener{ 
    private int mPostion; 

    public OnClickItem(int position){ 
     mPostion = position; 
    } 
    @Override 
    public void onClick(View v) { 
     YourActivity yourActivity = (YourActivity) mContext; 
     yourActivity.onItemClicked(mPostion); 
    } 
} 
+0

Es zeigt einen Fehler in "yourActivity.onItemClicked (mPostion);" diese Linie .. aber ich bereits, wie dies in anderen Projekten eingesetzt und es wurde gearbeitet, aber in diesem Projekt nicht funktioniert ... dontknow warum ... auch setListViewHeightBasedOnChildren ist auch nicht gearbeitet – alias26

Verwandte Themen