Autore Topic: Come utilizzare LayoutInflater ??  (Letto 642 volte)

Offline simox2601

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4
  • Sistema operativo:
    Windows
Come utilizzare LayoutInflater ??
« il: 12 Novembre 2013, 12:56:36 CET »
0
Ciao a tutti!!
Ho appena inserito nell'app il codice per una Expandable List View.

Questo è il codice dell'Adapter :
Codice (Java): [Seleziona]
import java.util.ArrayList;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckedTextView;
import android.widget.TextView;
import android.widget.Toast;

@SuppressWarnings("unchecked")
public class NewAdapter extends BaseExpandableListAdapter {

        public ArrayList<String> groupItem, tempChild;
        public ArrayList<Object> Childtem = new ArrayList<Object>();
        public LayoutInflater minflater;
        public Activity activity;

        public NewAdapter(ArrayList<String> grList, ArrayList<Object> childItem) {
                groupItem = grList;
                this.Childtem = childItem;
        }

        public void setInflater(LayoutInflater mInflater, Activity act) {
                this.minflater = mInflater;
                activity = act;
        }

        @Override
        public Object getChild(int groupPosition, int childPosition) {
                return null;
        }

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

        @Override
        public View getChildView(int groupPosition, final int childPosition,
                        boolean isLastChild, View convertView, ViewGroup parent) {
                tempChild = (ArrayList<String>) Childtem.get(groupPosition);
                TextView text = null;
                if (convertView == null) {
                        convertView = minflater.inflate(R.layout.childrow, null);
                }
                text = (TextView) convertView.findViewById(R.id.textView1);
                text.setText(tempChild.get(childPosition));
                convertView.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                Toast.makeText(activity, tempChild.get(childPosition),
                                                Toast.LENGTH_SHORT).show();
                        }
                });
                return convertView;
        }

        @Override
        public int getChildrenCount(int groupPosition) {
                return ((ArrayList<String>) Childtem.get(groupPosition)).size();
        }

        @Override
        public Object getGroup(int groupPosition) {
                return null;
        }

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

        @Override
        public void onGroupCollapsed(int groupPosition) {
                super.onGroupCollapsed(groupPosition);
        }

        @Override
        public void onGroupExpanded(int groupPosition) {
                super.onGroupExpanded(groupPosition);
        }

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

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded,
                        View convertView, ViewGroup parent) {
                if (convertView == null) {
                        convertView = minflater.inflate(R.layout.grouprow, null);
                }
                ((CheckedTextView) convertView).setText(groupItem.get(groupPosition));
                ((CheckedTextView) convertView).setChecked(isExpanded);
                return convertView;
        }

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

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

}

e qui di seguito i 2 xml:
Codice (XML): [Seleziona]
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/textView1"
   android:layout_width="wrap_content"
   android:layout_height="60dp"
   android:layout_marginLeft="5dp"
   android:gravity="center_vertical"
   android:textColor="#FFFFFF"
   android:padding="10dp"
   android:textSize="14sp"
   android:textStyle="bold" />
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="40dp"
   android:background="@android:color/black"
   android:clickable="true"
   android:orientation="vertical"
   android:paddingLeft="40dp"
   tools:context=".MainActivity" >

    <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="39dp"
       android:gravity="center_vertical" >

        <ImageView
           android:id="@+id/childImage"
           android:layout_width="30dp"
           android:layout_height="30dp"
           android:layout_margin="5dp"
           android:background="@drawable/ic_launcher"  />

        <TextView
           android:id="@+id/textView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginLeft="5dp"
           android:textColor="#FFFFFF"
           android:textSize="14sp"
           android:textStyle="bold" />
    </LinearLayout>

    <View
       android:layout_width="match_parent"
       android:layout_height="1dp"
       android:background="@android:color/white" />

</LinearLayout>

Nella mia activity non uso setContentView(R.layout.main); perchè altrimenti non funziona ma ho questo codice:
Codice (Java): [Seleziona]
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.app.ExpandableListActivity;

public class MainActivity extends ExpandableListActivity implements OnChildClickListener {
                       
    /*
     * Metodo richiamato alla creazione dell'Activity
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                resources = this.getResources();
                //setContentView(R.layout.main);
                                       
                sv = new DBAdapter(this);
                sv.open();
                                               
                try {
                        db = new DataBaseHelper(this);
                } catch (IOException e1) {
                        e1.printStackTrace();
                } catch (SQLException e1) {
                        e1.printStackTrace();
                }
                try {
                        db.opendatabase();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
               
                ExpandableListView expandbleLis = getExpandableListView();
                expandbleLis.setDividerHeight(2);
                expandbleLis.setGroupIndicator(null);
                expandbleLis.setClickable(true);

                setGroupData();
                setChildGroupData();

                NewAdapter mNewAdapter = new NewAdapter(groupItem, childItem);
                mNewAdapter.setInflater((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), this);
                getExpandableListView().setAdapter(mNewAdapter);
                expandbleLis.setOnChildClickListener(this);
        }

        public void setGroupData() {
                groupItem.add("TechNology");
                groupItem.add("Mobile");
                groupItem.add("Manufacturer");
                groupItem.add("Extras");
        }

        ArrayList<String> groupItem = new ArrayList<String>();
        ArrayList<Object> childItem = new ArrayList<Object>();

        public void setChildGroupData() {
                /**
                 * Add Data For TecthNology
                 */

                ArrayList<String> child = new ArrayList<String>();
                child.add("Java");
                child.add("Drupal");
                child.add(".Net Framework");
                childItem.add(child);

                /**
                 * Add Data For Mobile
                 */

                child = new ArrayList<String>();
                child.add("Android");
                child.add("Window Mobile");
                child.add("iPHone");
                child.add("Blackberry");
                childItem.add(child);
                /**
                 * Add Data For Manufacture
                 */

                child = new ArrayList<String>();
                child.add("HTC");
                child.add("Apple");
                child.add("Samsung");
                child.add("Nokia");
                child.add("PHP");

                childItem.add(child);
                /**
                 * Add Data For Extras
                 */

                child = new ArrayList<String>();
                child.add("Contact Us");
                child.add("About Us");
                child.add("Location");
                child.add("Root Cause");
                child.add("PHP");
                child.add("PHP");
                child.add("PHP");

                childItem.add(child);
        }

        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                Toast.makeText(ShowDaysActivity.this, "Clicked On Child", Toast.LENGTH_SHORT).show();
                return true;
        }
}

Il mio problema è che questa lista che compare in maniera corretta dovrei inserirla nel Layout del main ma non riesco a farlo penso a causa del LayoutInflater e del mio main. Come posso fare????

Grazie in anticipo!!!