2016-10-26 19 views
6

इसलिए मैंने इस एप्लिकेशन को सपनों के विश्लेषण के लिए बनाया है और यह फोन पर बहुत अच्छी तरह से काम करता है, लेकिन टैबलेट पर स्पष्टीकरण में जानकारी मिश्रित हो जाती है क्योंकि आप नीचे दी गई तस्वीर में देख सकते हैं।विस्तारणीय लिस्ट व्यू के आइटम मिश्रित

यही है, जब आप समूह पर क्लिक करते हैं तो इसे अपने बच्चों को छिपाना/दिखाना चाहिए, लेकिन जैसा कि आप देखते हैं, टैबलेट पर यह सिर्फ दूसरी जानकारी को चित्रित करना जारी रखता है, जैसे डिस्प्ले इसकी सामग्री को रीफ्रेश नहीं करेगा, मैं पता नहीं है कि क्या करना है, इस प्रकार आप मदद के लिए पूछ रहे हैं।

device-2016-10-26-094550.png

कंटेनर लेआउट:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="10dp"> 


    <ExpandableListView 
     android:id="@+id/sExpList" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:groupIndicator="@null" /> 

    <!-- FOR PORTRAIT LAYOUTS !--> 
    <FrameLayout 
     android:id="@+id/adLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center_horizontal" 
     android:layout_marginTop="5dp" 
     android:baselineAligned="false" 
     android:orientation="vertical"/> 
</LinearLayout> 

समूह तत्व कोड:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    > 

    <TextView 
     android:id="@+id/textGroup" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="5dp" 
     android:layout_marginTop="20dp" 
     android:layout_weight="1" 
     android:textStyle="bold" 
     android:textSize="@dimen/text_normal_size" /> 

    <ImageButton 

     android:id="@+id/sExp_BtnAdd" 
     android:layout_width="@dimen/btns_heigh" 
     android:layout_height="@dimen/btns_heigh" 
     android:layout_gravity="center_vertical" 
     android:contentDescription="" 
     android:focusable="false" 
     android:scaleType="centerCrop" 
     android:src="?attr/img_add" /> 

</LinearLayout> 

चाइल्ड तत्व कोड:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="match_parent"> 

    <TextView 
      android:id="@+id/textChild" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="20dp" 
      android:textColor="@android:color/white" 
      android:layout_weight="1" 
     android:textSize="@dimen/text_normal_size" /> 

    <ImageButton 
      android:layout_width="@dimen/btns_heigh" 
      android:layout_height="@dimen/btns_heigh" 
      android:id="@+id/sExp_BtnEdit" 
      android:layout_gravity="center_vertical" 
      android:src="?attr/img_edit" 
      android:scaleType="centerCrop" 
      android:focusable="false" 
     android:layout_marginRight="@dimen/btns_heigh" /> 


</LinearLayout> 

अभ्यास कोड:

import android.content.Context; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.ContextMenu; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.ExpandableListView; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 

/** 
* Created with IntelliJ IDEA. 
* User: Movsar Bekaev 
* Date: 11.06.13 
* Time: 7:30 
* To change this template use File | Settings | File Templates. 
*/ 
public class ActSignsManager extends cbActivity { 


    ExpandableListView expListView; 

    int selected_type; 
    String[] cats; 
    ArrayList<xSign> MySigns; 
    _sManagerExpAdapter adapter; 


    String[] catsMind; 
    String[] catsAction; 
    String[] catsForm; 
    String[] catsCircumstances; 


    private void cInitialization() { 
     setContentView(R.layout.alay_signs_manager); 

     catsMind = getResources().getStringArray(R.array.smanager_cats_mind); 
     catsAction = getResources().getStringArray(R.array.smanager_cats_action); 
     catsForm = getResources().getStringArray(R.array.smanager_cats_form); 
     catsCircumstances = getResources().getStringArray(R.array.smanager_cats_circumstances); 

     expListView = (ExpandableListView) findViewById(R.id.sExpList); 

     newSignFunc(); 
     readSigns(); 
     expFiller(); 
     adapter.notifyDataSetChanged(); 


     expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
      public boolean onChildClick(ExpandableListView parent, View v, 
             int groupPosition, int childPosition, long id) { 
       String s = MySigns.get(SignIndexAt(selected_type, groupPosition, adapter.getChild(groupPosition, childPosition).toString())).getTitle(); 
       Toast.makeText(ActSignsManager.this, String.valueOf(s), Toast.LENGTH_LONG).show(); 
       return false; 
      } 
     }); 
     expListView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() { 

      @Override 
      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
       String menuItems[]; 
       ExpandableListView.ExpandableListContextMenuInfo info = 
         (ExpandableListView.ExpandableListContextMenuInfo) menuInfo; 
       int type = ExpandableListView.getPackedPositionType(info.packedPosition); 
       int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition); 
       int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition); 

       if (type == 0) { 

        menuItems = getResources().getStringArray(R.array.exp_menu_ongroup); 
        menu.setHeaderTitle(adapter.getGroupText(groupPos)); 
        for (int i = 0; i < menuItems.length; i++) { 
         menu.add(Menu.NONE, i, i, menuItems[i]); 
        } 
       } 
       if (type == 1) { 
        String s = adapter.getChild(groupPos, childPos).toString(); 
        menuItems = getResources().getStringArray(R.array.exp_menu_onchild); 
        menu.setHeaderTitle(s); 
        for (int i = 0; i < menuItems.length; i++) { 
         menu.add(Menu.NONE, i, i, menuItems[i]); 
        } 
       } 
      } 
     }); 

    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setTheme(R.style.DarkTheme); 
     cInitialization(); 

    } 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo(); 
     int menuItemIndex = item.getItemId(); 
     int type = ExpandableListView.getPackedPositionType(info.packedPosition); 
     int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition); 
     int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition); 

     if (type == 0) { 

      switch (menuItemIndex) { 
       case 0: 
        Intent i = new Intent(ActSignsManager.this, ActSignsAddNew.class); 
        ps_int_params.put("Type", selected_type); 
        ps_string_arr_params.put("Categories", cats); 
        ps_int_params.put("Selected_Item", groupPos); 

        if (IS_FREE_VERSION && MySigns.size() > 69) 
         Toast.makeText(ActSignsManager.this, getString(R.string.ruefully_you_cant_add_another_sign), Toast.LENGTH_LONG).show(); 
        else startActivity(i); 

        break; 
      } 
     } 
     if (type == 1) { 
      int index = SignIndexAt(selected_type, groupPos, adapter.getChild(groupPos, childPos).toString()); 

      switch (menuItemIndex) { 
       case 0: 
        //  Toast.makeText(sManager.this, "edit", 5000).show(); 
        Intent i = new Intent(ActSignsManager.this, ActSignsAddNew.class); 

        ps_int_params.put("ID", MySigns.get(index).getID()); 
        ps_string_params.put("Name", MySigns.get(index).getTitle()); 
        ps_int_params.put("Type", MySigns.get(index).getType()); 
        ps_int_params.put("Category", MySigns.get(index).getCategory()); 
        ps_string_params.put("Note", MySigns.get(index).getNote()); 
        ps_string_arr_params.put("Categories", cats); 


        startActivity(i); 
        break; 
      } 
     } 

     return true; 
    } 

    // нажатие на элемент 

    void newSignFunc() { 
     String type = ps_string_params.get("Type"); 
     if (type.equals("Mind")) { 
      cats = catsMind; 
      selected_type = 0; 
     } 
     if (type.equals("Action")) { 
      cats = catsAction; 
      selected_type = 1; 
     } 
     if (type.equals("Form")) { 
      cats = catsForm; 
      selected_type = 2; 
     } 
     if (type.equals("Circumstances")) { 
      cats = catsCircumstances; 
      selected_type = 3; 
     } 

    } 

    private void readSigns() { 
     MySigns = new ArrayList<xSign>(); 

     Cursor c = ps_db.query(const_tbl_signs, null, null, null, null, null, null); 
     if (c != null) { 
      if (c.moveToFirst()) { 
       do { 
        xSign iSingleSign = new xSign(); 
        iSingleSign.setID(c.getInt(DBI_SIGNS_ID)); 
        iSingleSign.setHash(c.getString(DBI_SIGNS_HASH)); 
        iSingleSign.setTitle(c.getString(DBI_SIGNS_TITLE)); 
        iSingleSign.setType(c.getInt(DBI_SIGNS_TYPE)); 
        iSingleSign.setCategory(c.getInt(DBI_SIGNS_CATEGORY)); 
        iSingleSign.setNote(c.getString(DBI_SIGNS_NOTE)); 
        MySigns.add(iSingleSign); 
        Log.d("777", iSingleSign.getID() + "||| cat:" + iSingleSign.getCategory() + "||| type:" + iSingleSign.getType()); 
       } while (c.moveToNext()); 
       c.close(); 
      } else 
       Log.d("777", "0 rows"); 
     } 


    } 


    private int SignIndexAt(int type, int category, String name) { 
     boolean exist = false; 
     int index = -1; 
     for (int i = 0; i < this.MySigns.size(); i++) { 
      if (this.MySigns.get(i).getTitle().equals(name) && this.MySigns.get(i).getCategory() == category && this.MySigns.get(i).getType() == type) { 
       index = i; 
       exist = true; 
      } 
     } 
     if (exist) { 
      return index; 
     } else { 
      return 999999; 
     } 
    } 

    private boolean removeSign(int index) { 
     ps_db.delete(const_tbl_signs, "id = " + MySigns.get(index).getID(), null); 

     Toast.makeText(ActSignsManager.this, getString(R.string.messages_sign_removed), Toast.LENGTH_LONG).show(); 
     // Refresh main activity upon close of dialog box 

     readSigns(); 
     expFiller(); 

     adapter.notifyDataSetChanged(); 
     return true; 
    } 

    private void expFiller() { 
     ArrayList<String> tmp; 
     ArrayList<ArrayList<String>> groups = new ArrayList<ArrayList<String>>(); 
     for (int i = 0; i < cats.length; i++) { 
      tmp = new ArrayList<String>(); 
      for (xSign sign : MySigns) { 
       if (sign.getCategory() == i && sign.getType() == selected_type) 
        tmp.add(sign.getTitle()); 
      } 
      groups.add(tmp); 
     } 
     //Создаем адаптер и передаем context и список с данными 
     adapter = new _sManagerExpAdapter(this, cats, groups); 
     expListView.setAdapter(adapter); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     cInitialization(); 
     showAds(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     cInitialization(); 
     showAds(); 
    } 

    public class _sManagerExpAdapter extends BaseExpandableListAdapter { 

     private ArrayList<ArrayList<String>> mGroups; 
     private Context mContext; 
     private String[] cats; 

     public _sManagerExpAdapter(Context context, String[] categories, ArrayList<ArrayList<String>> groups) { 
      mContext = context; 
      mGroups = groups; 
      cats = categories; 
     } 


     public String getGroupText(int groupPosition) { 
      return cats[groupPosition]; 
     } 

     @Override 
     public int getGroupCount() { 
      return mGroups.size(); 
     } 

     @Override 
     public int getChildrenCount(int groupPosition) { 
      return mGroups.get(groupPosition).size(); 
     } 

     @Override 
     public Object getGroup(int groupPosition) { 
      return mGroups.get(groupPosition); 
     } 

     @Override 
     public Object getChild(int groupPosition, int childPosition) { 
      return mGroups.get(groupPosition).get(childPosition); 
     } 

     @Override 
     public long getGroupId(int groupPosition) { 
      return groupPosition; 
     } 

     @Override 
     public long getChildId(int groupPosition, int childPosition) { 
      return childPosition; 
     } 

     @Override 
     public boolean hasStableIds() { 
      return true; 
     } 

     @Override 
     public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
           ViewGroup parent) { 
      if (convertView == null) { 
       LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = inflater.inflate(R.layout.s_exp_group_view, null); 
      } 

      if (isExpanded) { 
       //Изменяем что-нибудь, если текущая Group раскрыта 
      } else { 
       //Изменяем что-нибудь, если текущая Group скрыта 
      } 

      TextView textGroup = (TextView) convertView.findViewById(R.id.textGroup); 
      textGroup.setText(cats[groupPosition] + " [" + String.valueOf(this.getChildrenCount(groupPosition)) + "]"); 

      ImageView btnAddSigns = (ImageView) convertView.findViewById(R.id.sExp_BtnAdd); 
      btnAddSigns.setFocusable(false); 
      final int gPos = groupPosition; 

      btnAddSigns.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i = new Intent(ActSignsManager.this, ActSignsAddNew.class); 
        ps_int_params.put("Type", selected_type); 
        ps_string_arr_params.put("Categories", cats); 
        ps_int_params.put("Selected_Item", gPos); 

        if (IS_FREE_VERSION && MySigns.size() > 69) 
         Toast.makeText(ActSignsManager.this, getString(R.string.ruefully_you_cant_add_another_sign), Toast.LENGTH_LONG).show(); 
        else startActivity(i); 
       } 
      }); 

      return convertView; 

     } 

     @Override 
     public View getChildView(int groupPosition, int childPosition, boolean isLastChild, 
           View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = inflater.inflate(R.layout.s_exp_child_view, null); 
      } 

      TextView textChild = (TextView) convertView.findViewById(R.id.textChild); 
      textChild.setText(mGroups.get(groupPosition).get(childPosition)); 

      final int index = SignIndexAt(selected_type, groupPosition, adapter.getChild(groupPosition, childPosition).toString()); 

      ImageView btnEditSign = (ImageView) convertView.findViewById(R.id.sExp_BtnEdit); 
      btnEditSign.setFocusable(false); 


      btnEditSign.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i = new Intent(ActSignsManager.this, ActSignsAddNew.class); 

        ps_int_params.put("ID", MySigns.get(index).getID()); 
        ps_string_params.put("Name", MySigns.get(index).getTitle()); 
        ps_int_params.put("Type", MySigns.get(index).getType()); 
        ps_int_params.put("Category", MySigns.get(index).getCategory()); 
        ps_string_params.put("Note", MySigns.get(index).getNote()); 
        ps_string_arr_params.put("Categories", cats); 
        startActivity(i); 
       } 
      }); 


      return convertView; 
     } 

     @Override 
     public boolean isChildSelectable(int groupPosition, int childPosition) { 
      return true; 
     } 
    } 


} 

उत्तर

0

खैर मुझे जवाब मिल गया है, और यहां यह है - आपको स्पष्ट रूप से लेआउट के लिए पृष्ठभूमि सेट करनी चाहिए, और यह महत्वपूर्ण नहीं है कि आप इसे स्पष्टीकरण या रूट तत्व पर सेट करें, यह बस सेट होना चाहिए।

यह प्रस्तावित समाधानों के साथ काम करना शुरू नहीं कर दिया जब तक कि मैंने गतिविधि के लेआउट में पृष्ठभूमि स्थापित नहीं की है, जो कि खोजकर्ता है।

दिलचस्प सवाल - यह क्यों काम करता है ?!

0

मैं इसे काम करने में सक्षम था लेकिन मुझे जो त्रुटि मिल रही थी वह आपकी तुलना में थोड़ा अलग थी।

जब मैं दोनों group_element.xml और child_element.xml में अपने लेआउट (शून्य से संसाधनों मैं नहीं था) ImageButton रों उपयोग करने के लिए किसी भी तरह पूरी पंक्ति में कब्जा कर रहे थे MotionEvent रों (जब वे नहीं करना चाहिए) की कोशिश की और मेरे मामले में यह था लेआउट के विस्तार के साथ गड़बड़ाना।

समाधान: मैं दो ImageButton दो ImageView के लिए दो दृश्यों के लिए OnTouchListener एस का निर्माण करता हूं। जैसा कि आप देख सकते हैं कि यह नेक्सस 7 एमुलेटर पर चल रहा है।

क्योंकि मेरे पास डेटासेट नहीं है और सबसे महत्वपूर्ण एडाप्टर कोड मैं यह सुनिश्चित नहीं कर सकता कि यह आपकी समस्या को ठीक करेगा।

enter image description here

पी.एस. मामले में आप रुचि रखते हैं मैं ExpandableListViews पर JournalDev के एडाप्टर उदाहरण के अनुकूलित संस्करण पर अपने एक्सएमएल का परीक्षण किया है:

import java.util.HashMap; 
import java.util.List; 
import android.content.Context; 
import android.graphics.Typeface; 
import android.view.LayoutInflater; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 
public class CustomExpandableListAdapter extends BaseExpandableListAdapter { 

    private Context context; 
    private List<String> expandableListTitle; 
    private HashMap<String, List<String>> expandableListDetail; 

    public CustomExpandableListAdapter(Context context, List<String> expandableListTitle, 
             HashMap<String, List<String>> expandableListDetail) { 
     this.context = context; 
     this.expandableListTitle = expandableListTitle; 
     this.expandableListDetail = expandableListDetail; 
    } 

    @Override 
    public Object getChild(int listPosition, int expandedListPosition) { 
     return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
       .get(expandedListPosition); 
    } 

    @Override 
    public long getChildId(int listPosition, int expandedListPosition) { 
     return expandedListPosition; 
    } 

    @Override 
    public View getChildView(int listPosition, final int expandedListPosition, 
          boolean isLastChild, View convertView, ViewGroup parent) { 
     final String expandedListText = (String) getChild(listPosition, expandedListPosition); 
     if (convertView == null) { 

      //--------------------------------------------- 
      LayoutInflater layoutInflater = (LayoutInflater) this.context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      convertView = layoutInflater.inflate(R.layout.child_element, null); 
     } 
     TextView expandedListTextView = (TextView) convertView 
       .findViewById(R.id.textChild); 
     expandedListTextView.setText(expandedListText); 

     ImageView editViewBtn = (ImageView)convertView.findViewById(R.id.sExp_BtnEdit); 
     editViewBtn.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 

       // do stuff 

       return false; 
      } 
     }); 


     return convertView; 
    } 

    @Override 
    public int getChildrenCount(int listPosition) { 
     return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
       .size(); 
    } 

    @Override 
    public Object getGroup(int listPosition) { 
     return this.expandableListTitle.get(listPosition); 
    } 

    @Override 
    public int getGroupCount() { 
     return this.expandableListTitle.size(); 
    } 

    @Override 
    public long getGroupId(int listPosition) { 
     return listPosition; 
    } 

    @Override 
    public View getGroupView(int listPosition, boolean isExpanded, 
          View convertView, ViewGroup parent) { 
     String listTitle = (String) getGroup(listPosition); 
     if (convertView == null) { 
      LayoutInflater layoutInflater = (LayoutInflater) this.context. 
        getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      convertView = layoutInflater.inflate(R.layout.group_element, null); 
     } 
     TextView listTitleTextView = (TextView) convertView 
       .findViewById(R.id.textGroup); 
     listTitleTextView.setTypeface(null, Typeface.BOLD); 
     listTitleTextView.setText(listTitle); 
     ImageView addV = (ImageView)convertView.findViewById(R.id.sExp_BtnAdd); 
     addV.setVisibility(View.VISIBLE); 

     addV.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 

       // do stuff 

       return false; 
      } 
     }); 

     return convertView; 
    } 

    @Override 
    public boolean hasStableIds() { 
     return false; 
    } 

    @Override 
    public boolean isChildSelectable(int listPosition, int expandedListPosition) { 
     return true; 
    } 
} 

डमी डेटा जनरेटर:

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

public class ExpandableListDataPump { 
    public static HashMap<String, List<String>> getData() { 
     HashMap<String, List<String>> expandableListDetail = new HashMap<String, List<String>>(); 

     List<String> ego = new ArrayList<String>(); 
     ego.add("dream 1"); 
     ego.add("dream 2"); 
     ego.add("dream 3"); 
     ego.add("dream 4"); 
     ego.add("dream 5"); 

     List<String> personalities = new ArrayList<String>(); 
     personalities.add("dream 1"); 
     personalities.add("dream 2"); 
     personalities.add("dream 3"); 
     personalities.add("dream 4"); 

     List<String> places = new ArrayList<String>(); 
     places.add("dream 1"); 
     places.add("dream 2"); 
     places.add("dream 3"); 
     places.add("dream 4"); 
     places.add("dream 5"); 

     expandableListDetail.put("Form of the ego", ego); 
     expandableListDetail.put("Form of other personalities", personalities); 
     expandableListDetail.put("Place's form", places); 
     return expandableListDetail; 
    } 
} 

मुख्य गतिविधि:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ExpandableListAdapter; 
import android.widget.ExpandableListView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

public class Main4Activity extends AppCompatActivity { 


    ExpandableListView expandableListView; 
    ExpandableListAdapter expandableListAdapter; 
    List<String> expandableListTitle; 
    HashMap<String, List<String>> expandableListDetail; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     expandableListView = (ExpandableListView) findViewById(R.id.sExpList); 
     expandableListDetail = ExpandableListDataPump.getData(); 
     expandableListTitle = new ArrayList<>(expandableListDetail.keySet()); 
     expandableListAdapter = new CustomExpandableListAdapter(this, expandableListTitle, expandableListDetail); 
     expandableListView.setAdapter(expandableListAdapter); 
     expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 

      @Override 
      public void onGroupExpand(int groupPosition) { 
       Toast.makeText(getApplicationContext(), 
         expandableListTitle.get(groupPosition) + " List Expanded.", 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     expandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { 

      @Override 
      public void onGroupCollapse(int groupPosition) { 
       Toast.makeText(getApplicationContext(), 
         expandableListTitle.get(groupPosition) + " List Collapsed.", 
         Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, 
             int groupPosition, int childPosition, long id) { 
       Toast.makeText(
         getApplicationContext(), 
         expandableListTitle.get(groupPosition) 
           + " -> " 
           + expandableListDetail.get(
           expandableListTitle.get(groupPosition)).get(
           childPosition), Toast.LENGTH_SHORT 
       ).show(); 
       return false; 
      } 
     }); 
    } 
} 

आपका हल्के से बदल मुख्य एक्सएमएल, ImageButton से ImageView करने के लिए स्विच करने के लिए मत भूलना:

:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="10dp"> 


    <ExpandableListView 
     android:id="@+id/sExpList" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:groupIndicator="@null" /> 

    <!-- FOR PORTRAIT LAYOUTS !--> 
    <FrameLayout 
     android:id="@+id/adLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center_horizontal" 
     android:layout_marginTop="5dp" 
     android:baselineAligned="false" 
     android:orientation="vertical"/> 
</LinearLayout> 

समूह एक्सएमएल (मैं संसाधनों और आयाम है कि आप से सहमत नहीं हुई में से कुछ बदल)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    > 

    <TextView 
     android:id="@+id/textGroup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="17dp" 
     android:layout_marginTop="2dp" 
     android:layout_weight="7" 
     android:textStyle="bold" 
     android:textSize="13sp" /> 

    <ImageView 

     android:id="@+id/sExp_BtnAdd" 
     android:layout_width="25dp" 
     android:layout_height="25dp" 
     android:layout_gravity="center_vertical" 
     android:contentDescription="" 
     android:focusable="false" 
     android:scaleType="centerCrop" 
     android:src="@android:drawable/ic_input_add" /> 

</LinearLayout> 

बच्चे xml:

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

    <TextView 
     android:id="@+id/textChild" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="?android:attr/expandableListPreferredItemPaddingLeft" 
     android:layout_marginTop="2dp" 
     android:textColor="@android:color/white" 
     android:layout_weight="1" 
     android:textSize="13sp" /> 

    <ImageView 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_marginEnd="?android:attr/expandableListPreferredItemPaddingLeft" 
     android:id="@+id/sExp_BtnEdit" 
     android:layout_gravity="center_vertical" 
     android:src="@android:drawable/ic_menu_edit" 
     android:scaleType="centerCrop" 
     android:focusable="false" 
     android:layout_marginRight="5dp" /> 

</LinearLayout> 

उफ ... यह एक लंबा था, उम्मीद है कि यह मदद करता है!

+0

मेरी मदद करने की कोशिश करने के लिए धन्यवाद, मैंने आपके द्वारा प्रस्तावित किया है - बटन के साथ बटन बदल दिया है और टच घटनाओं पर जोड़ा है, लेकिन दुर्भाग्य से मेरे परिणाम नहीं बदले। मैंने अपनी गतिविधि का कोड जोड़ा, कृपया इसकी समीक्षा करें शायद आपको कुछ गड़बड़ मिल जाएगी। –

+0

भले ही आपने मेरी टिप्पणी का जवाब नहीं दिया, फिर भी आपका जवाब दिखाता है कि आपने इस समस्या का वास्तविक प्रयास किया है और यह पता लगाने के लिए अनुकरण किया है कि क्या हो रहा था, और हालांकि यह मेरी मदद नहीं करता (स्वीकार्य उत्तर देखें), मैं आपको बक्षीस देने का फैसला किया :) –

+0

धन्यवाद @ movsar जो आप में से बहुत दयालु है। आप बिल्कुल सही हैं, आपको वापस न मिलने के लिए खेद है। स्वीकार्य उत्तर पढ़ने के बाद भी मुझे नहीं पता कि समस्या पृष्ठभूमि क्यों है, लेकिन मैं आपके द्वारा की गई वही समस्या को पुन: पेश नहीं कर सका, विचार के लिए भोजन? एक बार फिर धन्यवाद! – HenriqueMS

0

आप

android:layout_height="wrap_content" 

को

android:layout_height="match_parent" 

से दोनों सूची आइटम में अपनी जड़ लेआउट पैरामीटर की स्थापना की कोशिश की है?

0

एंड्रॉइड कई स्क्रीन के लिए डिज़ाइन किया गया है, इसलिए कभी-कभी एक एकल लेआउट फ़ाइल कुछ स्क्रीनों का अच्छी तरह से समर्थन नहीं कर सका। एक सुझाव आप मदद कर सकते हैं:

मूल आइटम के लेआउट फाइल पर कुछ समायोजन करने, गोली सही पर यह करना होगा, फिर बचाने के लिए और इसी निर्देशिका में समायोजित फ़ाइल डाल इस प्रकार है:

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra-large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation 

और xlarge स्क्रीन कम से कम 960 डीपी x 720 डीपी, बड़ी स्क्रीन कम से कम 640 डीपी x 480 डीपी, सामान्य स्क्रीन कम से कम 470 डीपी x 320 डीपी, छोटी स्क्रीन कम से कम 426 डीपी x 320 डीपी हैं। इस विषय के बारे में यहाँ

सरकारी दस्तावेजों, https://developer.android.com/guide/practices/screens_support.html#qualifiers

कौन सा मैंने सोचा था कि साधारण लेआउट पर असामान्य व्यवहार से निपटने के लिए एक बेहतर समाधान है।

संबंधित मुद्दे